数十万行あるエクセルをPostgreSQLにインサート/アップデートするワークフローを作っています。
その時に文字化け(例えば"¿"みたいなもの)があると、PostgreSQLへのインサートが失敗しAlteryxにもエラーログが残らず、いろんなトラブルの原因になってしまっています。
① 文字化けしたものをうまく抽出する方法か
② DBに書き込むときにエラーを見つける方法か
何かこの辺やってみたらいいんじゃないかというもの思い当たる方いたら教えてください。
NICE SUBJECTです!
私も困っているので是非知りたいです。
@tyasui さん (一部修正しました)
なにを「文字化け」とするかによりますが、例えばフォーミュラツールで
Check1 = REGEX_Match([Test], "[\w\s]+")
Check2 = REGEX_Match([Test], "[\!-~\s]+")
Check3 = REGEX_Match([Test], "[\!-~\s\w]+")
とすると以下の結果になりますので、"¿" などは判別できるかと思いますが いかがでしょうか。
Check2だと記号はOKになりますが、今度は2バイト文字が含まれなくなりますね。。
Check3だと記号も日本語もOKそうです。
@tyasui さん、 @Shun001 さん
プログラム言語でも文字化けの自動判定は至難なようです。
https://ja.stackoverflow.com/questions/34287/%E5%AF%BE%E8%B1%A1%E6%96%87%E5%AD%97%E5%88%97%E3%81%8C%E6%96%87%E5%AD%97%E5%8C%96%E3%81%91%E3%81%97%E3%81%A6%E3%81%84%E3%82%8B%E3%81%8B%E3%81%A9%E3%81%86%E3%81%8B%E6%9D%A1%E4%BB%B6%E5%88%86%E5%B2%90-%E6%97%A5%E6%9C%AC%E8%AA%9E%E3%81%8C%E5%90%AB%E3%81%BE%E3%82%8C%E3%81%A6%E3%81%84%E3%82%8B%E3%81%8B%E3%81%A9%E3%81%86%E3%81%8B%E3%81%AE%E5%88%A4%E5%AE%9A
文字化けしたあとの文字列を収集しておいて、一致するかどうか確認することは可能ですが、それが普通に出てくる文字列であった場合は判定は不可ですね・・・。
文字化けのしかたも色々とあるので、悩ましいですが、例えば名前が文字化けして「¿」となる、というのであれば、¿が含まれているかどうかの判定で良い気がします(名前には本来「¿」は含まれないので)。
対処療法になりますが、ちょっとこれくらいしか思いつきません。