导入CSV对于SQLite(Import CSV to SQLite)

2019-07-20 03:33发布

我试图导入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

我甚至不知道为什么它会发现四列数据的六件和两列。 任何帮助吗? :)

Answer 1:

什么也在评论说来,SQLite的看到你的输入为1,25,62,7,我也有一个问题,在我的情况下,通过改变“分隔符”,到“.mode CSV”解决。 所以,你可以尝试:

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

第一个命令创建表的列名。 但是,如果你想从CSV文件继承了列名,你可能只是忽略了第一道防线。



Answer 2:

以下是我做到了。

  • 制作/转换csv文件由制表符(\ t),而不是由任何引号来分隔(sqlite的解释引号字面 - 说旧文档)
  • 进入到需要添加数据DB的SQLite的外壳

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



Answer 3:

我从合并以前的答案在这里与我自己的经验信息。 最简单的是直接添加逗号分隔的表头到您的CSV文件,然后一个新行,然后你所有的CSV数据。

如果你是永远不会再这样做sqlite的东西(像我一样),这可能会为你节省网络搜索或两个:

在SQLite的shell中输入:

$ sqlite3 yourfile.sqlite
sqlite>  .mode csv
sqlite>  .import test.csv yourtable
sqlite>  .exit

如果你还没有sqlite的Mac上安装,运行

$ brew install sqlite3

你可能需要做如何安装自制一个网络搜索。



Answer 4:

.IMPORT命令之前,键入 “.mode CSV”



Answer 5:

我有完全相同的问题(在OS X 10.9.1 Maverics用的SQLite3 3.7.13,但我不认为SQLite是关系到原因)。 我试图从导入的MS Excel 2011,这BTW保存CSV数据。 使用';' 作为列分隔符。 我发现,从Excel csv文件仍然使用换行符从Mac OS 9次,将其更改为UNIX换行符解决了这个问题。 AFAIR的BBEdit有这样的命令,以及崇高的文本2。



Answer 6:

TERMSQL

随着termsql你可以做一个行:

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



文章来源: Import CSV to SQLite