将CSV导入SQLite

时间:2013-02-19 00:41:57

标签: 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

我甚至不确定为什么它会找到包含六个数据和两列的四列。有帮助吗? :)

8 个答案:

答案 0 :(得分:127)

评论中还说了什么,SQLite认为您的输入为1,25,62,7。我也有问题,在我的情况下,它通过更改"分隔符来解决,&#34 ;进入" .mode csv"。所以你可以试试:

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

第一个命令创建表的列名。但是,如果您希望从csv文件继承列名,则可能只是忽略第一行。

答案 1 :(得分:22)

我是这样做的。

  • 制作/转换csv文件由制表符分隔(\ t)并且不包含在任何引号中(sqlite解释引号字面意思 - 说旧文档)
  • 输入需要添加数据的数据库的sqlite shell

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

答案 2 :(得分:4)

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

答案 3 :(得分:3)

我有完全相同的问题(在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。

答案 4 :(得分:3)

TERMSQL

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

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

答案 5 :(得分:3)

如何将csv文件导入sqlite3

它为我工作。

1 =>创建数据库

command : sqlite3 NYC.db

2 =>设置模式和表名

command : .mode csv tripdata

3 =>将csv文件数据导入sqlite3

command : .import yellow_tripdata_2017-01.csv tripdata

4 =>查找表

command : tables

5 =>查找您的表架构

command : .schema tripdata

6 =>查找表数据

command : select * from tripdata limit 10;

7 =>计算表格数据

command : select count (*) from tripdata;

答案 6 :(得分:1)

执行以下步骤:-

  1. 1] sqlite3名称 2] .mode csv表名 3] .import Filename.csv表名

答案 7 :(得分:0)

正如某些网站和其他文章所指定的,它简单地对此一看。 https://www.sqlitetutorial.net/sqlite-import-csv/

我们不需要为csv文件指定分隔符,因为csv表示以逗号分隔。 sqlite> .separator ,不需要此行。

sqlite> create table cities(name, population);
sqlite> .mode csv
sqlite> .import c:/sqlite/city_no_header.csv cities

这将完美地工作:)

PS:带有标题的我的city.csv。


name,population
Abilene,115930
Akron,217074
Albany,93994
Albuquerque,448607
Alexandria,128283
Allentown,106632
Amarillo,173627
Anaheim,328014