CSVファイルアダプタで「"(ダブルクォート)」を含むデータを出力した場合に、一つのダブルクォートが自動で二つのダブルクォートになります

Avatar
dstn

Question

CSVファイルアダプタで「"(ダブルクォート)」を含むデータを出力した場合に、一つのダブルクォートが自動で二つのダブルクォートになります。
どうしてでしょうか?

Answer

ご質問の動作は、CSVアダプタの仕様となります。書き込むデータに「"」を含む場合は、
「""」のように2つ続けて出力します。
(このように、ダブルクォーテーションに対して、ダブルクォーテーションを付与する
ことをエスケープといいます)

上記はCSVの公式な仕様(RFC)に準拠した仕様となります。CSV の RFC に関しては
「参考情報」をご参照ください。

対応方法

・ダブルクォーテーションを除外して出力したい場合

例えば、「"aa」というデータを「aa」として出力したい場合、
文字列ごとに置換ロジックなど、文字列を置換するロジックを
使用して、ダブルクォーテーションを空文字に置換することで
実現できます。

文字列を置換するロジックは複数ありますので、詳細に関しては、
参考情報に記載したリンクよりご確認ください。

・ダブルクォーテーションをそのまま出力したい場合

可変長アダプタをお持ちの場合、可変長ファイル書き込み処理で、
ダブルクォーテーションをエスケープせずに出力することができます。

可変長ファイル書き込み処理につきましては、参考情報に記載した
リンクをご参照ください。 

参考情報

ダブルクォーテーションのエスケープについて

http://www.ietf.org/rfc/rfc4180.txt
上記サイトの「2.  Definition of the CSV Format」に以下の記述があります。

7.  If double-quotes are used to enclose fields, then a double-quote
     appearing inside a field must be escaped by preceding it with
     another double quote.

文字列を置換するロジックについて

・文字列ごとに置換
 http://patch.appresso.com/DataSpider/help/DSS32/doc/help/ja/mapper/document/logic/convert.html
・CSVファイルによる置換
 http://patch.appresso.com/DataSpider/help/DSS32/doc/help/ja/mapper/document/logic/convertByFile.html
・DBテーブルによる置換
 http://patch.appresso.com/DataSpider/help/DSS32/doc/help/ja/mapper/document/logic/convertByDB.html

可変長アダプタについて

・可変長ファイル書き込み 
 http://patch.appresso.com/DataSpider/help/DSS32/doc/help/ja/adapter/file/variablelength_put_data.html
・可変長書き込みウィザード
 http://patch.appresso.com/DataSpider/help/DSS32/doc/help/ja/adapter/file/variable_put_wizard.html



[注意事項]
  • このFAQの内容は2017年3月時点のものです。内容は予告なく変更されることがありますので、ご注意ください。
  • 一部にDataSpider Servistaサポートサイトへのリンクを含むことがあります。サポートサイトにアクセスするには、DataSpiderのサポート契約が必要です。


ID:Q142

コメント

記事コメントは受け付けていません。

Powered by Zendesk