はじめに
データロードに関する開発作業を進める際、ロード対象データのフォーマットとCOPYコマンドのパラメータ調整が大変な場合があります。
本記事では、RFC4180に準拠したCSVフォーマットのデータをロードするためのパーサ「FCSVPARSER」をご紹介します。
RFC4180に準拠したCSVフォーマットであれば、COPYコマンドのパラメータ調整を簡素化することが可能です。
使用方法
構文
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データをロードする実行例です。
/* ロード対象データの確認(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)検証バージョンについて
この記事の内容はVertica 9.2で確認しています。
更新履歴
2019/07/19 本記事を公開