はじめに
あるところに、デリミタ文字tab、文字列に「"」(ダブルクォーテーション)を含むtsvファイルがありました。
DataSpiderのCSVファイル読み込みコンポーネントには下記の仕様制限がありました。

つまり、「"」(ダブルクォーテーション)を含むCSVファイルは読み取るの?読み取れないの?
「ダブルクォーテーションを含むtsvファイルをCSVアダプタで読み込み、PostgreSQLに書き込む」検証してみました。
検証概要
検証パターン
※表にはデリミタ文字はスペースで表していますが実際はtabです。
| No | 読み込みデータ | サンプルファイル |
|---|---|---|
| ① | He says I'm" fi"ne | sample1.tsv |
| ② | He says "I'm fine" | sample2.tsv |
| ③ | "He says "I'm fine"" | sample3.tsv |
| ④ | "He says ""I'm fine""" | sample4.tsv |
表にはデリミタ文字はスペースで表していますが実際はtabです。
検証スクリプト
CSV読み取りと可変長読み取りの2つのアダプターで検証します。
どちらもファイルを読み取ってPostgreSQLに書き込みシンプルなスクリプト
CSV読み取り設定
可変長読み取り設定
PostgreSQLテーブル書き込み設定
検証パターン①:He says I'm" fi"ne
元データ
CSVアダプタ利用時PostgreSQL書き込み結果
可変長アダプタ利用時PostgreSQL書き込み結果
検証パターン②:He says "I'm fine"
元データ
CSVアダプタ利用時PostgreSQL書き込み結果
可変長アダプタ利用時PostgreSQL書き込み結果
検証パターン③:"He Says "I'm fine""
元データ
CSVアダプタ利用時PostgreSQL書き込み結果
可変長アダプタ利用時PostgreSQL書き込み結果
検証パターン④:"He Says ""I'm fine"""
元データ
CSVアダプタ利用時PostgreSQL書き込み結果
可変長アダプタ利用時PostgreSQL書き込み結果
検証結果まとめ
データの区切りを分かりやすくするため、[]でくくっています。
| No | 読み込みデータ | CSV読み込み | 可変長読み込み |
|---|---|---|---|
| ① | He says I'm" fi"ne | [He][says][I'm"][fi"ne] | [He][says][I'm"][fi"ne] |
| ② | He says "I'm fine" | [He][says][I'm fine][] | [He][says]["I'm][fine"] |
| ③ | "He says "I'm fine"" | [He says I'm][fine""][][] | ["He][says]["I'm][fine""] |
| ④ | "He says ""I'm fine""" | [He says "I'm fine"][][][] | ["He][says][""I'm][fine"""] |
終わりに
ダブルクオーテーションの厄介さを再認識しました。
データのクレンジングって大事です。

















