我正在尝试将 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
我什至不确定为什么它会找到四列,其中包含六条数据和两列。
我正在尝试将 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
我什至不确定为什么它会找到四列,其中包含六条数据和两列。
评论中还说了什么,SQLite 将您的输入视为 1、25、62、7。我也遇到了问题,在我的情况下,它通过将“分隔符”更改为“.mode csv”来解决。所以你可以尝试:
sqlite> create table foo(a, b);
sqlite> .mode csv
sqlite> .import test.csv foo
第一个命令为表创建列名。但是,如果您想要从 csv 文件继承的列名,您可以忽略第一行。
我正在将以前答案中的信息与我自己的经验合并。最简单的方法是将逗号分隔的表头直接添加到您的 csv 文件中,然后是一个新行,然后是您的所有 csv 数据。
如果您再也不会做 sqlite 的事情(像我一样),这可能会为您节省一两次网络搜索:
在 Sqlite 外壳中输入:
$ sqlite3 yourfile.sqlite
sqlite> .mode csv
sqlite> .import test.csv yourtable
sqlite> .exit
如果你的 Mac 上没有安装 Sqlite,运行
$ brew install sqlite3
您可能需要进行一次网络搜索以了解如何安装 Homebrew。
这就是我的做法。
进入需要添加数据的db的sqlite shell
sqlite> .separator "\t" ---IMPORTANT! should be in double quotes
sqlite> .import afile.csv tablename-to-import-to
如何将csv文件导入sqlite3
创建数据库
sqlite3 NYC.db
设置模式和表名
.mode csv tripdata
将csv文件数据导入sqlite3
.import yellow_tripdata_2017-01.csv tripdata
查找表
.tables
查找您的表架构
.schema tripdata
查找表数据
select * from tripdata limit 10;
计算表中的行数
select count (*) from tripdata;
在 .import 命令之前,输入“.mode csv”
使用Termsql,您可以在一行中完成:
termsql -i mycsvfile.CSV -d ',' -c 'a,b' -t 'foo' -o mynewdatabase.db
我遇到了完全相同的问题(在 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 都有这个命令。
就我而言,我必须查看我试图添加的文件,它有标题,分隔符是分号;
。
我先试过:
.mode csv
.import myfile.csv mytable
但它没有用,所以我尝试了:
.separator ";"
.import myfile.csv mytable
它确实有效,所以我不得不手动设置分隔符。
正如一些网站和其他文章所指出的,这很简单。 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
按照步骤:-
1] sqlite3 名称
2] .mode csv 表名
3] .import Filename.csv 表名