質問: 【やりたいこと】 インプットデータのcsvファイルをpostgresqlのCOPY文で挿入し、 直前で挿入したデータのみ出力したい。 【困っていること】 select * FROM table名で全部取得するのではなく、COPY文で挿入したデータのみというのが、 できず困っています。。。 下記に記載したテーブルの2行目、3行目のみをselectしたいです。(COPY文でも出来ますか?) 無知ですいませんが、知恵をいただけると助かります。 ``` CREATE TABLE testDB (ID SERIAL NOT NULL, test1 INT4 NOT NULL, test2 INT4 NOT NULL, test3 VARCHAR(256)); ``` ``` \copy testDB(test1, test2, test3) FROM '/tmp/inputCSV/test.csv' WITH CSV; # 上記で挿入したデータをselectしたい。 select ~ ``` ●CSVの中身 2,2,2.jpg 3,3,3.jpg ●テーブルの中身 ID | test1 | test2 | test3 1 1 1 1.jpg 2 2 2 2.jpg 3 3 3 3.jpg
回答: 質問にあるデータの情報では識別は困難です。 一時的に識別したいだけなら、別テーブルにそのCSVを取り込むのが一番手っ取り早いでしょう。 恒常的に識別が必要なら識別出来る情報が必要です。 カラムを追加して、COPYによらない場合にはその項目に値を設定するようにすると、COPYではNULLになります。 逆のケースとしては、CSVを一時テーブルにCOPYで取り込んで、そのテーブルから目的のテーブルへの更新の際に識別の情報も設定する。