OpenText Analytics Database 旧Vertica

技術情報サイト

Analytics Database

CSVフォーマットのパーサを使用してロードする方法

公開日:
更新日:
データロード
#COPY
#エスケープ文字

はじめに

データロードに関する開発作業を進める際、ロード対象データのフォーマットとCOPYコマンドのパラメータ調整が大変な場合があります。
本記事では、RFC4180に準拠したCSVフォーマットのデータをロードするためのパーサ「FCSVPARSER」をご紹介します。
RFC4180に準拠したCSVフォーマットであれば、COPYコマンドのパラメータ調整を簡素化することが可能です。

使用方法

構文

COPY スキーマ名.テーブル名
FROM 'CSVファイル名'
PARSER FCSVPARSER(パラメータ);

なお、RFC4180に準拠しないフォーマットの場合においても、FCSVPARSERで用意されているパラメータの範囲内であれば、フォーマット指定を調整することも可能です。
主なパラメータは以下のとおりです。

パラメータデフォルト値内容
delimiter, (カンマ)区切り文字
escape" (ダブルクォーテーション)エスケープ文字
enclosed_by" (ダブルクォーテーション)囲み文字
record_terminator\n または \r\n改行コード
headertrueヘッダー行


その他のパラメータや詳細については、以下のマニュアルをご参照ください。
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 本記事を公開