143

csv ファイルを SQLite テーブルにインポートしようとしています。

csv の例:

1,2
5,6
2,7

コマンド例:

sqlite> create table foo(a, b);
sqlite> .separator ,
sqlite> .import test.csv foo
Error: test.csv line 1: expected 2 columns of data but found 4

6 つのデータと 2 つの列を含む 4 つの列が見つかる理由もわかりません。

4

10 に答える 10

180

コメントでも言われていることですが、SQLite はあなたの入力を 1, 25, 62, 7 と認識します。だからあなたは試すことができます:

sqlite> create table foo(a, b);
sqlite> .mode csv
sqlite> .import test.csv foo

最初のコマンドは、テーブルの列名を作成します。ただし、csv ファイルから継承された列名が必要な場合は、最初の行を無視するだけでかまいません。

于 2014-07-05T00:46:31.253 に答える
32

これが私がやった方法です。

  • タブ(\ t)で区切られ、引用符で囲まれていないcsvファイルを作成/変換します(sqliteは引用符を文字通り解釈します-古いドキュメントを言います)
  • データを追加する必要があるデータベースの sqlite シェルを入力します

    sqlite> .separator "\t" ---IMPORTANT! should be in double quotes sqlite> .import afile.csv tablename-to-import-to

于 2015-04-03T18:49:01.437 に答える
4

Termsqlを使用すると、1 行で実行できます。

termsql -i mycsvfile.CSV -d ',' -c 'a,b' -t 'foo' -o mynewdatabase.db

于 2014-11-23T19:52:43.623 に答える
1

私の場合、追加しようとしているファイルを確認する必要がありました。ヘッダーがあり、セパレーターはセミコロンでした;

私は最初に試しました:

.mode csv
.import myfile.csv mytable

しかし、うまくいかなかったので、次のことを試しました。

.separator ";"
.import myfile.csv mytable

そしてうまくいったので、セパレーターを手動で設定する必要がありました。

于 2021-08-18T13:51:02.030 に答える