Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Csv 如何使用SQLite3导入tsv文件_Csv_Sqlite_Tsv_Import From Csv - Fatal编程技术网

Csv 如何使用SQLite3导入tsv文件

Csv 如何使用SQLite3导入tsv文件,csv,sqlite,tsv,import-from-csv,Csv,Sqlite,Tsv,Import From Csv,我有一个tsv(制表符分隔文件),我想用sqlite3导入它。有人知道清楚的方法吗 我已经安装了sqlite3,但还没有创建任何数据库或表 我试过这个命令 .import /path/filename.tsv my_new_table 但它给了我一个错误:没有这样的表:我的新表 然而,根据我所读到的,如果表不存在,它应该自动创建表。这是否意味着我需要首先创建并使用数据库,或者将.tsv文件导入sqlite还有其他技巧吗?您应该创建表,设置分隔符并导入数据 TSV示例: data.tsv(选项卡

我有一个tsv(制表符分隔文件),我想用sqlite3导入它。有人知道清楚的方法吗

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

我试过这个命令

.import /path/filename.tsv my_new_table
但它给了我一个错误:没有这样的表:我的新表


然而,根据我所读到的,如果表不存在,它应该自动创建表。这是否意味着我需要首先创建并使用数据库,或者将.tsv文件导入sqlite还有其他技巧吗?

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

TSV示例:

data.tsv
(选项卡作为分隔符):

1) 创建表格并将选项卡设置为分隔符:

Bob 30  1000
Wendy   20  900
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

实际上,有一种专用模式用于导入选项卡分隔的文件:

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

name    param1  param2
Bob 30  1000
Wendy   20  900

不要像我那样在import语句的末尾放分号:)
错误:没有这样的表:people
注意,使用
.separator“\t”
意味着sqlite仍将使用csv样式的规则来解释引号,这可能不是您想要的。一个更好的选择是使用adius的回答中描述的
选项卡
模式。似乎名字上有一些逻辑。在.separator“\t”之后,我还必须将.csv重命名为.tsvNo,以便创建一个表。导入将为您完成此操作。如果您很高兴为您选择每一列的类型。我这样做了,一切都是“文本”。这可能适用于您正在手动探索数据以便稍后丢弃的情况;我想现在可能是正确的链接