21

SQLite 内のテーブルにデータ ファイル (12 ほどある) を取得しようとしています。各ファイルにはヘッダーがあり、来年中に数回受信する予定なので、次のことを行います。

  1. 各ファイルを編集してヘッダーを削除することは避けてください。
  2. これを行うために、シェル スクリプトや 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;
>

等価性をテストするための構文が間違っていましたか? わからない; ドキュメントは2つを区別していないようです。また頑張ろうと思いました…

> .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テキスト ファイルにヘッダー行があることはかなり一般的な状況であるため、呼び出し時にヘッダー行をスキップする簡単なオプションがあることを期待していました。

4

4 に答える 4

12

patid列名です。
"patid"引用符で囲まれた列名です。
'patid'は文字列です。

条件は、列WHERE patid = "patid"の値をそれ自体と比較します。patid

(SQLite では、MySQL との互換性のために二重引用符を含む文字列を使用できますが、文字列をテーブル/列名と混同できない場合に限ります。)

于 2012-11-27T15:27:28.157 に答える
1

@steven-penny への代替応答

sqlite のインポート中に bash コマンドを使用することもできます

.mode csv
.import '| tail -n +2 artist_t.csv' artist_t
于 2021-09-29T06:38:00.940 に答える