8

SQL Server 2008 R2 データベースにインポートする必要がある UTF-8 でエンコードされたフラット ファイルが多数あります。一括挿入は直径を識別できず、UTF-8 を受け入れるようにも見えません。

SQL Server 2008 が UTF-8 エンコーディングを処理する方法に関する記事が多数あることは理解していますが、それらの記事のほとんどが古いため、更新された回答を探しています。

これらのフラット ファイルをデータベースに取り込むために、挿入前に変換するか、挿入中にプロセスを実行するためにできることはありますか?

それぞれを手動で変換することは避けたいと思います。さらに、私が作成しようとした SSIS パッケージは、データを読み取って分離することができます。どうやらデータを移動することはできません。:(

フラット ファイルは Java によって生成されます。Java 環境を UTF-8 から他のエンコーディングに変換できませんでした。

ノート

UTF-8 データを保存するつもりはありません。デリミタが UTF-8 であるため、おかしくなっています。SQL Server は、列と行を分離するときに文字を読み取ることができません。それでおしまい。

4

5 に答える 5

2
  1. データ ファイルを UTF-16 リトル エンディアン (正確にはリトル エンディアン) に変換します。
  2. -w オプションを指定して bcp を使用します。
于 2015-08-26T09:11:02.043 に答える
1

参考までに、誰かがそれをググって、私のようにここに落ちたら.


私は受け入れられた答えを何十回も試しましたが、成功しませんでした。私の場合、データ ファイルは.csvフラット ファイルで、ç é ã á.

また、選択したエンコーディングに関係なく、インポートは 1251 (ANSI - Latin 1) エンコーディングを使用して行われたことにも注意しました。

したがって、解決策は import の前に変換され、.csvファイルは UTF-8 からまったく同じ 1251 (ANSI - Latin 1) encodingに変換されました。Notepad ++を使用して変換を行いました。

変換後、(SSMS タスク -> [データのインポート] ウィザードを使用して) 通常のインポートを行い、1251 (ANSI - Latin 1) エンコーディングを選択すると、すべてが正しくインポートされました。


環境:

SQL Server Web 2016

SQL Server Management Studio v17.9.1

メモ帳++ v7.7.1


また、これは元のOPの質問にも答えます:

これらのフラット ファイルをデータベースに取り込むために、挿入前に変換するか、挿入中にプロセスを実行するためにできることはありますか?

于 2020-01-19T02:21:22.223 に答える