トップ回答者
sapの特殊文字が混入するcsvファイルをSSISで取り込む場合の対処方法

質問
-
csvファイルをSSIS(SQLServer2012のSSIS)で取り込むプログラムを設計中なのですが、
送信元の担当者(お客様)からは、ファイルの中に特殊文字が入っており、これをRFC準拠のエスケープシーケンスを付与してくる想定です。
との事で、SSIS側でどのようにすれば対応できるのか調査中です。
csvファイルのデータ元はOracleなのですが、Oracleにはsapからデータを取り込んでいるため、特殊文字が入ってくるようです。
csvファイルの文字コードはShift-JIS、各項目値は全てダブルクォーテーションで括る事になっています。
そこで質問なのですが、
質問1.上記の場合にSSISでcsvファイルを取り込む際に、どのような対応が必要で
具体的にどう対処すれば良いのか教示いただけないでしょうか?
質問2.RFC準拠のエスケープシーケンスとは何の文字に該当するのでしょうか?
宜しくお願いいたします。
回答
-
一般にCSVとRFCといえばRFC4180ですが、これによればエスケープとは「項目をダブルコーテーションでくくれば、その中にはカンマとか改行コードを入れられます。その中にダブルクオテーションを入れたい場合は2つ連続にすること」とはあります。
ただ、「エスケープシーケンス」なので違う気もします。
一番有名なエスケープシーケンスは、ISO-2022-JPの奴ら(RFC1468)ですが、Shift-JISなのでこれも当てはまりませんね。まさかESC $ Bを使って文字コードを切り替えるようなものをShift-JISと呼称することはないでしょう。
とすると、RFC5137(ASCII Escaping of Unicode Characters)っぽい気がします。UNICODE文字を\u00A1とか\u'00A2'とかで表現する方法です。であれば、質問2の「何の文字」といわれると、「UNICODE全域」が渡ってくる可能性がありますね(今は110万字でしたか)。
SSISで処理する方法はわかりませんが、何かしらのフィルタでUTF-16に変換してNVARCHARとかに突っ込む手でしょうか。
jzkey
- 回答としてマーク 星 睦美 2015年3月10日 5:11
すべての返信
-
一般にCSVとRFCといえばRFC4180ですが、これによればエスケープとは「項目をダブルコーテーションでくくれば、その中にはカンマとか改行コードを入れられます。その中にダブルクオテーションを入れたい場合は2つ連続にすること」とはあります。
ただ、「エスケープシーケンス」なので違う気もします。
一番有名なエスケープシーケンスは、ISO-2022-JPの奴ら(RFC1468)ですが、Shift-JISなのでこれも当てはまりませんね。まさかESC $ Bを使って文字コードを切り替えるようなものをShift-JISと呼称することはないでしょう。
とすると、RFC5137(ASCII Escaping of Unicode Characters)っぽい気がします。UNICODE文字を\u00A1とか\u'00A2'とかで表現する方法です。であれば、質問2の「何の文字」といわれると、「UNICODE全域」が渡ってくる可能性がありますね(今は110万字でしたか)。
SSISで処理する方法はわかりませんが、何かしらのフィルタでUTF-16に変換してNVARCHARとかに突っ込む手でしょうか。
jzkey
- 回答としてマーク 星 睦美 2015年3月10日 5:11