はじめに

ロード対象のCSVファイルを運用していく中で、全ての列ではなく特定の列にのみ
囲み文字が付与されているというケースが出てきた場合を想定した対応方法をご紹介します。

テストデータの例

通常、全ての列に囲み文字がある/ないという場合が殆どかと思いますが、
以下の例では、2列目にのみ囲み文字が付与されているテストデータです。
このテストデータを例として手順をご紹介します。

テストテーブルの作成

初めにテストテーブルを作成します。

ロードコマンドの例

作成したテーブルに対して前述のCSVファイルをロードします。
構文と実行例は以下のとおりです。

構文

テーブル名の後ろに列名を指定します。
その際に、囲み文字が付与されている列名に囲み文字の指定を記述します。
COPY スキーマ名.テーブル名(<列名>, <列名 囲み文字の指定>, <列名>)
FROM ‘CSVファイル名’ DELIMITER ‘区切り文字’;

実行例

今回の例の場合、2列目のデータにのみ囲み文字があるため、
対応するcol2に対して囲み文字を指定します。

まとめ

どの列に囲み文字が付与されているのかを明示的に指定することで、
例外的な出力フォーマットのCSVファイルもロード処理を実行できます。
このような例外的なケースにも対応できるよう参考になさってください。

参考情報

CSVデータのロード方法
http://vertica-tech.ashisuto.co.jp/load-csv/

データロードのまとめ記事
http://vertica-tech.ashisuto.co.jp/load-summary/

検証バージョンについて

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