OpenText Analytics Database 旧Vertica

技術情報サイト

Analytics Database

COPYでロードに成功/失敗した件数を確認する方法

公開日:
更新日:
データロード
#COPY

はじめに

COPYコマンドでロードに成功した件数とロードに失敗した件数は、関数を検索することで確認することができます。
以下で関数を使用した確認方法をご紹介します。

関数

下記の関数でCOPYによるロードの結果を確認することがきます。

[ロードに成功した件数を確認する関数]
get_num_accepted_rows

[ロードに失敗した件数を確認する関数]
get_num_rejected_rows

※COPYで”ABORT ON ERROR”を設定した場合は上記関数で件数を確認することができません。
※COPYを行ったセッションで関数を実行する必要があります。

使用例

■ロードするテーブルの確認をします。
dbadmin=> \d tbl1
                                   List of Fields by Tables
 Schema | Table | Column |    Type    | Size | Default | Not Null | Primary Key | Foreign Key
--------+-------+--------+------------+------+---------+----------+-------------+-------------
 public | tbl1  | col1   | int        |    8 |         | f        | f           |
 public | tbl1  | col2   | varchar(5) |    5 |         | f        | f           |
 public | tbl1  | col3   | int        |    8 |         | f        | f           |

■ロードするCSVの確認をします。
cat tbl1.csv
1,ABC,111
2,ABCD,222
3,ABCDE,333
4,ABCDEF,444   <= COL2列にvarchar(5)を超える桁数の"ABCDEF"をロードする
5,ABCDEFG,555  <= COL2列にvarchar(5)を超える桁数の"ABCDEFG"をロードする 

■COPYでデータロードを実行します。 ("REJECTED DATA"オプションで指定したファイルにロードで失敗したデータを出力します) 
dbadmin=> copy tbl1 from local './tbl1.csv' delimiter ',' ENFORCELENGTH REJECTED DATA '/tmp/tbl1_reject.csv' direct;
 Rows Loaded
-------------
           3

■テーブルを検索します。
dbadmin=> select * from tbl1;
 col1 | col2  | col3
------+-------+------
    1 | ABC   |  111
    2 | ABCD  |  222
    3 | ABCDE |  333

■COPYでロードに成功した件数を確認します。
dbadmin=> select get_num_accepted_rows();
 get_num_accepted_rows
-----------------------
                     3   <= 3件のロードが成功したことを確認できます。 

■COPYでロードに失敗した件数を確認します。
dbadmin=> select get_num_rejected_rows();
 get_num_rejected_rows
-----------------------
                     2   <= 2件のロードが失敗したことを確認できます。 

■COPYでロードに失敗したデータを確認します。 
dbadmin=> \! cat /tmp/tbl1_reject.csv
4,ABCDEF,444
5,ABCDEFG,555

検証バージョンについて

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