|
分類:[その他の言語]
DBがSQL-server(2016)で住所情報を扱うシステムの改修を担当してます。
〜マスタにSSISでDBにCSV、TSVから (TSVに関しては本当はExcelですが、Excel用OLEDBプロバイダーがインストールされないためSSISの機能やT-SQLでExcelから直接Insertの手段が取れません) bulk insert or 一括挿入タスクでマスタにインポートするフローを実装中です。
その際、ファイルの提供元により住所情報の丁目等の数字が、 全角数字だったり、漢数字だったりバラバラなので、マスタインポートのプロジェクト(パッケージ)内で半角数値に統一する処理が必要です。 後続処理の名寄せを丁目(大字)単位までで行う必要があるのと対照テーブルの既存レコードが半角数字で統一させる必要があるため、 要件的に必須の機能です。 イメージ的にはSSIS上、一旦、マスタにそのまま入れ、次のフローで一括Updateするイメージで実装しようと考えています。
全角数値については、あまりスマートとは言えませんが、 SQL-ServerのReplace関数が正規表現に対応していないようなので、 スカラ値関数で、 Whileで、文字コード対比で10回ループして、Replaceをかける関数をつくり、 SQLでスカラ値関数を呼ぶ方法でステップ数少なめにできる見込みですが、 漢数字の方が文字コードの順番が半角数字と異なるため、loopでステップ数を少なくできる見込みがありません。
以下のいずれの方法が適当でしょうか?
(1)横着せず、t-SQLでreplaceを10行書く (2)SSISでカーソルに取得して、式タスクで何とかする (3)スクリプトタスクでVB or C# + ADO.netでloopしながらstrconvで変換する (4)その他:具体的にご教示いただければありがたく
制約条件としては、 保守フェーズ以降に私が関われる可能性が低く、 来年度以降の面倒を見るメンバーに、VBとかC#のスキルがありません。 したがって、できればSQLかT-SQLで何とかした方が都合が良いです。
よろしくお願いします。
|