はじめに
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で確認しています。