web-dev-qa-db-ja.com

PostgreSQL:COPY FROMはトランザクション内でどのように動作しますか?

テーブルにインポートする必要がある800万行のCSVファイルがあります。このインポートは現在トランザクション内で行われます。

COPY FROMはサブトランザクションを作成しますか?失敗すると、親トランザクションはロールバックされますか、それともそのままになりますか?

5
andrewdotnich

COPY FROMはサブトランザクションを作成しますか?

いいえ。トランザクションで実行されない場合は、単一のトランザクションを作成します。それ以外の場合は、現在のトランザクションを使用します。

失敗すると、親トランザクションはロールバックされますか、それともそのままになりますか?

親トランザクションをロールバックします。

サブトランザクションが必要な場合は、COPY FROMの前に明示的に開始してください。

COPY FROMでエラーを無視して続行する方法はありません。エラーが発生すると、COPY全体が失敗します。

8
Craig Ringer