はじめに
データロードに関する開発作業を進める際、ロード対象データのフォーマットとCOPYコマンドのパラメータ調整が大変な場合があります。本記事では、RFC4180に準拠したCSVフォーマットのデータをロードするためのパーサ「FCSVPARSER」をご紹介します。
RFC4180に準拠したCSVフォーマットであれば、COPYコマンドのパラメータ調整を簡素化することが可能です。
使用方法
構文
1 2 3 |
COPY スキーマ名.テーブル名 FROM 'CSVファイル名' PARSER FCSVPARSER(パラメータ); |
なお、RFC4180に準拠しないフォーマットの場合においても、FCSVPARSERで用意されているパラメータの範囲内であれば、フォーマット指定を調整することも可能です。
主なパラメータは以下のとおりです。
パラメータ | デフォルト値 | 内容 |
---|---|---|
delimiter | , (カンマ) | 区切り文字 |
escape | " (ダブルクォーテーション) | エスケープ文字 |
enclosed_by | " (ダブルクォーテーション) | 囲み文字 |
record_terminator | \n または \r\n | 改行コード |
header | true | ヘッダー行 |
その他のパラメータや詳細については、以下のマニュアルをご参照ください。
https://www.vertica.com/docs/9.2.x/HTML/Content/Authoring/FlexTables/FCSVPARSERreference.htm
実行例
RFC4180に準拠したCSVデータをロードする実行例です。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
/* ロード対象データの確認(RFC4180に準拠したフォーマット) */ $ cat /tmp/table1.csv col1,col2,col3 1,2019-01-01,"あいうえお" 2,2019-01-02,"かき""くけこ" 3,2019-01-03,"さし,すせそ" 4,2019-01-04,"たちつ てと" /* テーブルの作成 */ dbadmin=> CREATE TABLE table1 dbadmin-> ( dbadmin(> col1 INT, dbadmin(> col2 DATE, dbadmin(> col3 VARCHAR(30) dbadmin(> ); CREATE TABLE /* FCSVPARSERを使用してデータロード */ dbadmin=> COPY public.table1 dbadmin-> FROM '/tmp/table1.csv' dbadmin-> PARSER FCSVPARSER() ; Rows Loaded ------------- 4 (1 row) /* データロード結果の確認 */ dbadmin=> SELECT * FROM public.table1; col1 | col2 | col3 ------+------------+------------- 1 | 2019-01-01 | あいうえお 2 | 2019-01-02 | かき"くけこ 3 | 2019-01-03 | さし,すせそ 4 | 2019-01-04 | たちつ てと (4 rows) |