はじめに
COPYコマンドは、CSVデータ内の改行を1レコードの終端文字として扱います。
以下のCSVデータは2レコード目に改行が含まれています。
このCSVデータをデータロードしようとした場合、4レコードのデータが存在するとみなされ、3レコード目がエラーになります。
$ cat /home/dbadmin/test.csv
"0001","2018-01-01","あいうえお"
"0002","2018-01-02","かきく
けこ"
"0003","2018-01-03","さしすせそ"本記事では、上記の2レコード目をデータロードする方法をご紹介します。
改行データのロード方法
CSVデータ内の改行もデータとしてデータロードする場合は、RECORD TERMINATORパラメータを使用してレコード終端文字を指定します。
構文
COPY スキーマ名.テーブル名
FROM 'CSVファイル名'
DELIMITER ',' ENCLOSED BY '”'
RECORD TERMINATOR 'レコード終端文字' ;実行例
以下の例は、レコード終端文字をセミコロン「;」としています。
【CSVデータの内容】
$ cat /home/dbadmin/test.csv
"0001","2018-01-01","あいうえお";
"0002","2018-01-02","かきく
けこ";
"0003","2018-01-03","さしすせそ";【COPYコマンドの実行】
dbadmin=> COPY public.test
dbadmin-> FROM '/home/dbadmin/test.csv'
dbadmin-> DELIMITER ','
dbadmin-> ENCLOSED BY '"'
dbadmin-> RECORD TERMINATOR ';' ;
Rows Loaded
-------------
3
(1 row)【データロード結果の確認】
dbadmin=> SELECT * FROM public.test;
col1 | col2 | col3
------+------------+-------------
0001 | 2018-01-01 | あいうえお
0002 | 2018-01-02 | かきく
けこ
0003 | 2018-01-03 | さしすせそ
(3 rows)検証バージョンについて
この記事の内容はVertica 9.1で確認しています。
更新履歴
2021/06/25 項目名を「改行データのロード方法」に修正
2017/02/16 本記事を公開