导入CSV到SQLite

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

我甚至不知道为什么它会find六个数据和两列的四列。 任何帮助? 🙂

在评论中还说了什么,SQLite看到你的input为1,25,62,7。我也有一个问题,在我的情况下,它是通过更改“分隔符”,“.mode csv”解决。 所以你可以尝试:

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

这是我做的。

  • 通过制表符(\ t)制作/转换csv文件,不包含任何引号(sqlite会直接解释引号 – 表示旧文档)
  • input需要添加数据的数据库的sqlite shell

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

在.import命令之前,键入“.mode csv”

我有完全相同的问题(在OS X Maverics 10.9.1与SQLite3 3.7.13,但我不认为SQLite是相关的原因)。 我试图导入从MS Excel 2011保存的csv数据,这顺便说一句。 使用';' 作为列分隔符。 我发现Excel中的csv文件仍然使用Mac OS中的换行符9次,将其更改为unix换行符解决了这个问题。 AFAIR BBEdit有这个命令,还有Sublime Text 2。

TERMSQL

使用termsql你可以在一行中完成:

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

我正在合并来自以前答案的信息和我自己的经验。 最简单的方法是将逗号分隔的表头直接添加到您的csv文件中,然后添加一行,然后添加您的所有csv数据。

如果你再也不用做sqlite的东西(像我),这可能会节省你的网页search或两个:

在Sqlite shell中input:

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

如果您的Mac上没有安装Sqlite,请运行

 $ brew install sqlite3 

你可能需要做一个networkingsearch如何安装自制软件。