ExcelからSQLBulkCopyを介して入力されるSQLテーブルがあります。コピーダウンは、MicrosoftACEドライバーを使用して行われます。
1つの特定のファイルに問題がありました-それがsqlにロードされたとき、いくつかの列(Excelでは空に見える)に奇妙な値が含まれていました。
たとえば、次のSQLを実行します。
SELECT
CONVERT(VARBINARY(10),MyCol),
LEN(MyCol)
FROM MyTab
戻るだろう
0x, 0
つまり、-列の値をに変換するとvarbinary
何かが表示されますが、varcharの長さを実行しても長さは表示されません。表示されている値は16進値の語幹であることに気付きましたが、そこに到達するのは奇妙で、検出するのがどれほど難しいかです。
もちろん、Excelでセルをクリアすることもできますが、エンドユーザーにも同じ問題が発生するため、これを自動的に検出する必要があります。データが処理されるときに、さらに問題が発生します。問題を最終的な症状からソースでこの問題にまでさかのぼることは非常に困難です。
上記のSSMSでの出力への変換以外にvarbinary
、Excelで、またはSQLスクリプトを使用してこれらの値を削除する方法を思いつきませんでした。
何か案は?