我有一个tsv(制表符分隔的文件),想要用sqlite3导入。有没有人知道一个清晰的方法来做到这一点?
我已经安装了sqlite3,但还没有创建任何数据库或表。
我尝试了以下命令:
.import /path/filename.tsv my_new_table
但它给我报错:no such table: my_new_table。
然而,根据我的阅读,如果表不存在,它应该自动创建表。这是不是意味着我需要先创建和使用数据库,或者有其他的方法可以将 .tsv 文件导入到 SQLite 中?
我有一个tsv(制表符分隔的文件),想要用sqlite3导入。有没有人知道一个清晰的方法来做到这一点?
我已经安装了sqlite3,但还没有创建任何数据库或表。
我尝试了以下命令:
.import /path/filename.tsv my_new_table
但它给我报错:no such table: my_new_table。
然而,根据我的阅读,如果表不存在,它应该自动创建表。这是不是意味着我需要先创建和使用数据库,或者有其他的方法可以将 .tsv 文件导入到 SQLite 中?
实际上,导入制表符分隔文件有专门的模式:
sqlite> .mode tabs
sqlite> .import data.tsv people
如果您在tsv文件中包含标题行,您可以让sqlite自动创建表。只需在导入过程中使用一个未使用过的表名,并将tsv文件更改为:
同时,如果您在tsv文件中包含标题行,您可以让SQLite自动创建表格。只需要在导入时使用一个未使用的表名,并将tsv文件更改为:
name param1 param2
Bob 30 1000
Wendy 20 900
你需要创建表格,设置分隔符并导入数据(sqlite 文档)。
TSV 的示例:
data.tsv
(使用制表符作为分隔符):
Bob 30 1000
Wendy 20 900
创建一个表格,并将TAB作为分隔符:
sqlite> create table people (name text, param1 int, param2 int);
sqlite> .separator "\t"
导入数据:
sqlite> .import data.tsv people
结果是:
sqlite> select * from people;
Bob 30 1000
Wendy 20 900
.separator "\t"
意味着SQLite仍将使用CSV样式的规则来解释引号,这可能不是您想要的。更好的选择是使用adius答案中描述的“tabs”模式。 - Miles
Error: no such table: people
- user5359531--csv
或--ascii
,则输入模式将从.mode
输出模式派生”。 - andrewdotn