質問
Mapper処理で[CSVファイルによる置換]ロジックを使用して値を変換した結果、変換後の値にカンマ(,)が含まれる場合、CSV書き込み時にダブルクォーテーション("")が付与されてしまいます。ダブルクォーテーションなしでカンマ区切りのファイルを出力するにはどうすればよいですか?
回答
■原因
CSVファイルの標準仕様によるものです。
CSVファイル処理では、データとデータの間は指定したデリミタ文字で区切られます。デリミタ文字にはカンマ(,)や改行、タブが含まれます。CSVの標準仕様では、データにデリミタ文字が含まれる場合、データの最初と最後に「"」を記述する必要があるため、ダブルクォーテーションで囲まれます。変換後の値にカンマが含まれる場合、そのカンマがデリミタ文字と認識され、ダブルクォーテーションが付与されます。
■制約事項
[CSVファイルによる置換]ロジックを使用した場合、置換後の値にカンマが含まれるとダブルクォーテーションで括られてしまうため、ダブルクォーテーションなしでの出力要件を満たすことができません。
■解決方法
以下の構成で可変長ファイル書き込みを行うことで、ダブルクォーテーションなし・カンマ区切りの想定出力が得られます。
▼1つ目のMAPPER:[単一行文字列定数]と[連結]を使用
[文字列]→[基本]→[単一行文字列定数]を配置し、値に「,」(カンマ)を入力します。

[文字列]→[演算]→[連結]を配置し、「入力数」に対象フィールド数に応じた値(例:12)を入力します。

入力行と単一行文字列定数ロジックを交互にマッピングすることで、行ごとにカンマを追加して1行の文字列に変換します。

▼2つ目のMAPPER:[文字列ごとに置換]を使用
[文字列]→[変換]→[文字列ごとに置換]を配置します。
変換したい文字列(例:男性/女性それぞれの変換先文字列)を設定します。
[マッチング方法]→「部分一致」、[置換方法]→「部分置換」を選択してマッピングします。


▼可変長ファイル書き込み処理の設定
[可変長ファイル書き込み処理]の書き込み設定にて、「追加書き込み」のチェックを外して実行します。
※「追加書き込み」にチェックが入っていると、最新の出力結果がファイル末尾に追記され続けるため、想定通りの出力結果が得られません。チェックを外すことで、ダブルクォーテーションなし・カンマ区切りの想定出力が得られます。

■参考マニュアル
コメント
0件のコメント
記事コメントは受け付けていません。