【发布时间】:2018-04-09 11:03:07
【问题描述】:
我正在尝试将 CSV 文件导入到一个空表,但该表已存在于 SQLite 数据库中。例如:
sqlite> CREATE TABLE data (...);
sqlite> .mode csv
sqlite> .import mydata.csv data
我提前创建了表,因为我想指定主键、数据类型和外键约束。此过程按预期工作,但不幸的是,它在表中包含了 CSV 文件的标题行。
这是我从 SQLite 文档中了解到的关于 CSV 导入的内容:
有两种情况需要考虑:(1) 表“tab1”以前不存在,(2) 表“tab1”已经存在。
在第一种情况下,当表以前不存在时,会自动创建表,并使用输入 CSV 文件的第一行的内容来确定表中所有列的名称。换句话说,如果该表以前不存在,则 CSV 文件的第一行被解释为列名,实际数据从 CSV 文件的第二行开始。
对于第二种情况,当表已经存在时,CSV 文件的每一行,包括第一行,都被假定为实际内容。如果 CSV 文件包含列标签的初始行,则该行将作为数据读取并插入到表中。为避免这种情况,请确保该表以前不存在。
所以基本上,我得到了额外的数据,因为我已经提前创建了表格。是否有改变这种行为的标志?如果不是,最好的解决方法是什么?
【问题讨论】: