pg_bulkloadの制約チェックの動作について
pg_bulkloadの制約チェックの動作について
-背景-
bash shellスクリプトでpg_bulkloadを使用して、データを格納したいです。
Q:pg_bulkloadの制約チェックは、どのような動作をしているのでしょうか。
想定していた動作は以下ですが、
・すでにデータがあるテーブルに対して追加投入する際に、重複エラーが出た場合無視する
実際に動かしてみると以下の動作のように見えます。
・CSVファイル内に重複データが存在する場合、そのレコードを無視する(1つ目はロードされ、2つ目以降は無視)
・すでにデータがあるテーブルに対して追加投入する際に重複エラーが出た場合ロールバックする
使用時のコマンドは以下になります。
#!/bin/bash
pg_bulkload -d データベース名 -p ポート番号 -U ユーザー名 -o "OUTPUT=スキーマ名.テーブル名" -o "INPUT=test.csv" -o "LOADER=BUFFERED" -o "TYPE=CSV" -o "ENCODING=sjis" -o "CHECK_CONSTRAINTS=YES" -o "ON_DUPLICATE_KEEP=OLD" -o "DUPLICATE_ERRORS=-1" -u "err.csv"
pg_bulkloadについての知見がないため、ご教授お願いいたします。
0