我正在尝试将一个 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
我甚至不知道为什么它会找到四列,六个数据和两个列。
我遇到了完全相同的问题(在 OS X Maverics 10.9.1和 SQLite3.7.13上,但我不认为 SQLite 与原因有关)。我试图导入从 MSExcel2011保存的 csv 数据,顺便说一下。使用 ';'作为列分隔符。我发现来自 Excel 的 csv 文件仍然使用来自 Mac OS 的换行符9次,将其改为 unix 换行符解决了这个问题。AFAIR BBEdit 有一个这样的命令,以及崇高文本2。
';'
注释中也提到,SQLite 将您的输入看作1、25、62、7。我还遇到了一个问题,在我的案例中,通过将“分隔符”改为“解决了这个问题。模式 csv”。所以你可以试试:
sqlite> create table foo(a, b); sqlite> .mode csv sqlite> .import test.csv foo
第一个命令为表创建列名。但是,如果希望从 csv 文件继承列名,可以忽略第一行。
——新版 sqlite3——
最新版本的 sqlite3可以为您创建表和列(如果您允许的话)。
你也可以跳过这一行”。如果在 import 语句的末尾附加“—— csv”,则为“ csv 模式”,如下所示:
sqlite> .import test.csv foo --csv
使用 Termsql,你只需要一行代码就可以完成:
termsql -i mycsvfile.CSV -d ',' -c 'a,b' -t 'foo' -o mynewdatabase.db
在. import 命令之前,键入“ . mode csv”
我是这么做的。
输入需要添加数据的 db 的 sqlite shell
Sqlite > . 分隔符“ t”——重要! 应该用双引号 Sqlite > . import afile.csv tablename-to-import-to
我融合信息从以前的答案在这里与我自己的经验。最简单的方法是将逗号分隔的表头直接添加到 csv 文件中,然后添加一行,最后添加所有 csv 数据。
如果你再也不会像我一样做这样的事情,这可能会为你节省一两次网络搜索:
在 Sqlite shell 中输入:
$ sqlite3 yourfile.sqlite sqlite> .mode csv sqlite> .import test.csv yourtable sqlite> .exit
如果您的 Mac 上还没有安装 Sqlite,请运行
$ brew install sqlite3
你可能需要做一个网络搜索如何安装家酿。
如何导入 csv 文件到 sqlite3
创建数据库
sqlite3 NYC.db
Set the mode & tablename
.mode csv tripdata
Import the csv file data to sqlite3
.import yellow_tripdata_2017-01.csv tripdata
Find tables
.tables
Find your table schema
.schema tripdata
Find table data
select * from tripdata limit 10;
Count the number of rows in the table
select count (*) from tripdata;
按照以下步骤:-
1] sqlite3名称
2] . mode csv tablename
3] . import Filename.csv tablename
正如一些网站和其他文章指定,它的简单看看这一个。 Https://www.sqlitetutorial.net/sqlite-import-csv/
我们不需要为 csv文件指定分隔符,因为 csv 表示逗号分隔。
csv
sqlite> .separator ,不需要这条线。
sqlite> .separator ,
sqlite> create table cities(name, population); sqlite> .mode csv sqlite> .import c:/sqlite/city_no_header.csv cities
这将完美无缺地发挥作用:)
附注: 我的 cities.csv 带有页眉。
name,population Abilene,115930 Akron,217074 Albany,93994 Albuquerque,448607 Alexandria,128283 Allentown,106632 Amarillo,173627 Anaheim,328014
在我的例子中,我必须看到我试图添加的文件,它有标题和分隔符是一个分号 ;。
;
我先试了试:
.mode csv .import myfile.csv mytable
但是没用,所以我试了:
.separator ";" .import myfile.csv mytable
它确实起作用了,所以我不得不手动设置分离器。