純粋な推測:
- ファイルは
utf-8
です エンコードされた(または他のエンコード、SQL-Server 2008はネイティブに読み取ることができません)。- SQL-Serverはファイルエンコーディングにかなり制限されていることを知っておく必要があります。
CHAR
(またはVARCHAR
)はextended ASCII 1-byte encoding
です およびNCHAR
(またはNVARCHAR
)はUCS-2 2-byte encoding
です (これはUTF-16
とほぼ同じです 。 - SQL-Server 2016(およびv2014のSP2)では、特に
utf-8
について、さらにいくつかのサポートが導入されました。 。 - 適切なエディタ(notepad ++など)でXMLを開いて、ファイルのエンコーディングを調べてみてください。これを「unicode/UCS-2 / utf-16」として保存し、インポートを再試行してください。
- インポートを
CLOB
で使用してみてくださいBLOB
の代わりに 。ファイルをバイナリとして読み取る LargeObjectは、バイトを次々に取得します。 SQL-Serverは、これらのバイトを1文字あたりのサイズが固定された文字列として読み取ろうとします。 キャラクター LOBは特別な状況で機能する可能性があります。 - 最初の2バイトで
BOM
を確認します (バイト順マーク)
- SQL-Serverはファイルエンコーディングにかなり制限されていることを知っておく必要があります。
- いくつかの汚れがあります XML内
- HEXエディターでファイルを開き、奇妙なコードを見つけてみてください
- コードは、動的に作成されたステートメント内でファイルのコンテンツを処理します。
- このような場合、切り捨てまたは文字列を壊す引用符に遭遇することがあります
- 一般的なヒント:
- データをインポートして問題が発生することが予想される場合は、2ステップアプローチを使用することを強くお勧めします。
- ファイルを許容ステージングテーブルに読み込みます (
NVARCHAR(MAX)
を使用 またはVARBIANRY(MAX)
ターゲット列)、これを続行してみてください。 - インポートする前に、別のツールを使用してファイルを変更する必要がある場合があります。