如何使用SQLite3导入tsv文件

问题描述:

我有一个tsv(制表符分隔文件),我想用sqlite3导入。有人知道一个明确的方法来做到这一点吗?如何使用SQLite3导入tsv文件

我已经安装了sqlite3,但尚未创建任何数据库或表。

我试着命令

.import /path/filename.tsv my_new_table 

,但它给我的错误:没有这样的表:my_new_table。

但是,从我读的它应该自动创建表,如果它不存在。这是否意味着我需要首先创建和使用数据库,或者是否有另一个将.tsv文件导入到sqlite的技巧?

您应该创建表格,设置分隔符并导入数据sqlite wiki

示例TSV:

data.tsv(标签作为分隔符):

Bob 30 1000 
Wendy 20 900 

1)创建一个表,并设置TAB作为分隔符:

sqlite> create table people (name text, param1 int, param2 int); 
sqlite> .separator "\t" 

2)导入数据:

sqlite> .import data.tsv people 

,其结果是:

sqlite> select * from people; 
Bob 30 1000 
Wendy 20 900 
+0

谢谢!简单而高效。 – bsuire 2014-09-28 22:04:08

+0

2016年的感谢。 – Anekdotin 2016-10-15 18:33:48

+1

请注意,使用'.separator“\ t”'意味着sqlite仍然会使用csv样式来解释引号,这可能不是您想要的。更好的选择是使用adius答案中描述的“tabs”模式。 – Miles 2017-06-19 08:28:18

其实是有导入制表符分隔的文件专用模式:

sqlite> .mode tabs 
sqlite> .import data.tsv people 

此外,如果您在您的TSV文件标题行,你可以让SQLite的自动创建桌子。 只需在导入过程中使用未使用的表名并将tsv文件更改为:

name param1 param2 
Bob 30 1000 
Wendy 20 900 
+2

这真的是最好的答案。谢谢@adius – 2016-02-21 21:37:56

+2

不要在导入语句的末尾放一个分号,就像我做的那样:) – 2016-08-22 22:02:23