12
我試圖讓我的數據文件(其中有一打左右)到SQLite中的表。每個文件都有一個標題,我將在接下來的一年內接收它們幾次,所以我希望:SQLite3導入CSV&排除/跳過標題
- 避免編輯每個文件以在我收到標題時刪除標題;
- 避免回退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
作爲標題行是相當常見的情況,那麼我會期望有一個簡單的選項可以跳過標題行。
啊,哈哈!謝謝,我沒有注意到這種微妙的細微差別。 – slackline
可以肯定的是,做正確刪除的條件應該是WHERE patid =「'patid'」,對嗎? – gvrocha
@gvrocha不,'''...'「'沒有意義。 –