postgresQLでCOPYを使ってデータをインポートするところまでは出来たのですが、データに追加があった場合、追加分だけをインポートする方法はありませんでしょうか?
試してませんが、やりたいのは以下のようなことでしょうか。
https://www.postgresql.jp/document/16/html/sql-copy.html
COPY FROMコマンドは、ファイルからテーブルへとデータをコピーします
(この時、既にテーブルにあるデータにコピーした内容を追加します)。
既にデータがある場合は追加分だけ読み込まれるということでしょうか?
追加して同じようにCOPYのコードを入れたら下記のエラーが表記され出来ませんでした。
ERROR: duplicate key value violates unique constraint "id_code_pkey"
DETAIL: Key (id)=(A123456789) already exists.
追加データに関して、新たにファイルを作成し、
COPYコマンドでインポートすれば良いと思いますが、
何か問題があるということですか?
上記コメントは撤回します。
COPYコマンドは、インサートしかしないため、
すでにテーブル上に、同じ主キーのデータが存在する場合
インサートできずにエラーになります。
なので、ファイル内は、テーブル上に存在しないデータのみにしてください。
もし上記のようにできない場合には、
下記のステップで実施することができると思います。
1.1次テーブルの作成
2.1次テーブル内の全レコード削除
3.COPYコマンドで1次テーブルにインサート
4.主キーが存在する場合には、1次テーブルから既存テーブルにアップデート
5.主キーが存在しない場合には、1次テーブルから既存テーブルにインサート
上記4と5が下記記事にように同時に実行できます。
https://qiita.com/suin/items/171e5b2c9ef88225861b
追加する分だけインポートしたら出来ました。
重複するデータは無視出来たら良かったのですが、COPYコマンドでは無理なのですね。
ありがとうございました。
回答1件
あなたの回答
tips
プレビュー