0

挿入時に式を評価するコピー コマンドは可能ですか?

たとえば、次の表を考えてみましょう

create table test1  ( a int, b int)

インポートするファイルがあります

5  , case when b = 1 then 100 else 101
25 , case when b = 1 then 100 else 101
145, case when b = 1 then 100 else 101

次のコマンドは失敗します

COPY test1 FROM 'file' USING DELIMITERS ',';

次のエラーで

エラー: 整数の入力構文が無効です

これは、case 式を評価できないことを意味します。回避策はありますか?

4

1 に答える 1

1

ドキュメントで説明されているように、このコマンドCOPYは (明らかに) データをコピーするだけで、SQL コードを評価しません: http://www.postgresql.org/docs/9.3/static/sql-copy.html

私の知る限り、SQL コードを評価する COPY を作成するための回避策はありません。

csv ファイルを前処理しINSERT、次の形式のステートメントを含む標準の SQL スクリプトに変換する必要があります。

INSERT INTO your_table VALUES(145, CASE WHEN 1 = 1 THEN 100 ELSE 101 END);

次に、使用しているクライアントで sql スクリプトを実行します。つまり、次のオプションpsqlを使用します。-f

psql -d your_database -f your_sql_script
于 2015-12-28T12:38:37.260 に答える