はじめに

データロードにおいて、以下のような目的で複数テーブル間でのデータの整合性が求められる場合があります。

  • 複数テーブルに対するデータロード実行中、中途半端なデータをユーザへ公開したくない
  • 複数テーブルに対するデータロードが1つでもエラーとなったらROLLBACKしたい

  • 本記事では、複数テーブルに対するロードが正常終了した場合にCOMMITするといった、トランザクション管理の方法をご紹介します。

    データロード時にトランザクション管理する方法

    構文

    COPY文で「NO COMMIT」パラメータを使用します。
    デフォルトでは「NO COMMIT」パラメータがOFFになっており、1つのCOPY文が完了すると自動的にCOMMITされます。

    SQL=> COPY スキーマ名.テーブル名
    SQL-> FROM ‘CSVファイル名’
    SQL-> [ NO COMMIT | COMMIT ];

    実行例


    参考情報

    関連マニュアル「Using Transactions to Stage a Load」
    https://www.vertica.com/docs/10.0.x/HTML/Content/Authoring/DataLoad/OverrideCOPYAutoCommit.htm

    検証バージョンについて

    この記事の内容はVertica 10.0で確認しています。

    更新履歴

    2021/01/06 本記事を公開