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