SQLite3 导入 CSV 并排除/跳过标头

2024-01-12

我正在尝试将我的数据文件(其中有十几个左右)放入 SQLite 中的表中。每个文件都有一个标题,我将在未来的一年中多次收到它们,所以我想:

  1. 当我收到文件时,避免编辑每个文件以删除标头;
  2. 避免依靠 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 http://www.sqlite.org/lang_expr.html似乎没有区分两者。我以为我会再试一次...

> .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因为文本文件中包含标题行是相当常见的情况。


这对我有用:

.read schema.sql
.mode csv
.import --skip 1 artist_t.csv artist_t

或者,如果您只有一个文件要导入,您可以这样做:

.import --csv --skip 1 artist_t.csv artist_t

https://sqlite.org/cli.html#importing_csv_files https://sqlite.org/cli.html#importing_csv_files

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SQLite3 导入 CSV 并排除/跳过标头 的相关文章

随机推荐