【发布时间】:2012-11-15 06:08:29
【问题描述】:
我正在尝试将我的数据文件(其中有十几个)放入 SQLite 中的表中。每个文件都有一个标题,明年我会收到几次,所以我想:
- 避免在收到文件时编辑每个文件以删除标题;
- 避免使用 shell 脚本或 Python 来执行此操作。
我定义我的表并导入数据...
> .separator "\t"
> .headers on
> CREATE TABLE clinical(
patid VARCHAR(20),
eventdate CHAR(10),
sysdate CHAR(10),
constype INT,
consid INT,
medcode INT,
staffid VARCHAR(20),
textid INT,
episode INT,
enttype INT,
adid INT);
> .import "Sample_Clinical001.txt" clinical
> SELECT * FROM clinical LIMIT 10;
patid eventdate sysdate constype consid medcode staffid textid episode enttype adid
patid eventdate sysdate constype consid medcode staffid textid episode enttype adid
471001 30/01/1997 09/03/1997 4 68093 180 0 0 0 20 11484
471001 30/01/1997 09/03/1997 2 68093 60 0 0 0 4 11485
我的第一个想法是删除违规行,但这并没有按预期工作,而是删除了整个表...
> DELETE FROM clinical WHERE patid = "patid";
> SELECT * FROM clinical LIMIT 3;
>
我是否弄错了测试相等性的语法?我不知道; the docs 似乎无法区分两者。我想我会再试一次...
> .import "Sample_Clinical001.txt" clinical
> SELECT * FROM clinical LIMIT 3;
patid eventdate sysdate constype consid medcode staffid textid episode enttype adid
patid eventdate sysdate constype consid medcode staffid textid episode enttype adid
471001 30/01/1997 09/03/1997 4 68093 180 0 0 0 20 11484
471001 30/01/1997 09/03/1997 2 68093 60 0 0 0 4 11485
> DELETE FROM clinical WHERE patid == "patid";
> SELECT * FROM clinical LIMIT 3;
>
我是在正确的轨道上还是在做一些愚蠢的事情?
我希望在调用 .import 时有一个简单的选项可以跳过标题行,因为在文本文件中包含标题行是一种相当常见的情况。
【问题讨论】:
-
你不应该有这个问题......你的csv的第一行应该自动以
INSERT failed: datatype mismatch结束,因为你有INT字段。 -
谢谢,虽然我在八年前解决了这个问题。