如何使用SQLite3导入tsv文件

bsu*_*ire 35 csv sqlite tsv import-from-csv

我有一个tsv(制表符分隔文件),我想用sqlite3导入.有人知道一个明确的方法吗?

我已经安装了sqlite3,但还没有创建任何数据库或表.

我试过这个命令

.import /path/filename.tsv my_new_table
Run Code Online (Sandbox Code Playgroud)

但它给了我错误:没有这样的表:my_new_table.

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

adi*_*ius 75

实际上有一种用于导入制表符分隔文件的专用模式:

sqlite> .mode tabs
sqlite> .import data.tsv people
Run Code Online (Sandbox Code Playgroud)

此外,如果在tsv文件中包含标题行,则可以让sqlite自动创建表.只需在导入期间使用未使用的表名,并将tsv文件更改为:

name    param1  param2
Bob 30  1000
Wendy   20  900
Run Code Online (Sandbox Code Playgroud)

  • 这真是最好的答案.谢谢@adius (4认同)
  • 不要在import语句的末尾放一个分号,就像我做的那样:) (3认同)

Gri*_*nov 31

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

TSV示例:

data.tsv (制表符作为分隔符):

Bob 30  1000
Wendy   20  900
Run Code Online (Sandbox Code Playgroud)

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

sqlite> create table people (name text, param1 int, param2 int);
sqlite> .separator "\t"
Run Code Online (Sandbox Code Playgroud)

2)导入数据:

sqlite> .import data.tsv people
Run Code Online (Sandbox Code Playgroud)

结果是:

sqlite> select * from people;
Bob 30  1000
Wendy   20  900
Run Code Online (Sandbox Code Playgroud)

  • 请注意,使用`.separator"\ t"`意味着sqlite仍然会使用csv样式的规则来解释引号,这可能不是你想要的.更好的选择是使用adius的答案中描述的`tabs`模式. (2认同)