作者:laosiji | 来源:互联网 | 2023-01-11 11:17
我正在尝试将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文件包含列标签的初始行,则该行将作为数据读取并插入表中.为避免这种情况,请确保该表先前不存在.
所以基本上,我得到额外的数据,因为我已经提前创建了表.有没有改变这种行为的旗帜?如果没有,最好的解决方法是什么?
1> CL...:
该sqlite3
命令行壳有没有这样的标志.
如果您有足够高级的操作系统,则可以使用外部工具拆分第一行:
sqlite> .import "|tail -n +2 mydata.csv" data
对于snide足够高级的评论+1