web-dev-qa-db-ja.com

SSIS:コードページが65001に戻る

私が書いているSSISパッケージに、ソースとしてCSVファイルがあります。接続マネージャの[全般]ページでは、コードページとして_65001_があります(私は何かをテストしていました)。 Unicodeはチェックされません。

列はvarchar(その他の)列を持つSQL Server宛先テーブルにマップされます。

宛先にエラーがあります:複数のコードページ(65001と1252)が指定されているため、列 "columnname"を処理できません。

SQL列は、他のアプリケーションが使用しているため、varcharではなくnvarcharにする必要があります。

次に、接続マネージャーの[全般]ページで、コードページを1252 (ANSI - Latin I)に変更してOKにしますが、もう一度開くと、_65001_に戻ります。 (テストのために)Unicodeをチェックしてもしなくても、違いはありません。

注として、CSVファイルとSQLテーブルに列が追加および削除された後に、これらすべてが発生し始めました(ユーザー、ご存知のとおり)。それ以前は、まったく問題はありませんでした。はい、高度なエディターでOLE DB宛先を更新しました。

これはSQL Server 2012であり、BIDSとSSISのどのバージョンにも付属しています。

10
Amarundo

65001コードページ= Unicode(UTF-8)

これに基づいて Microsoftの記事(フラットファイル接続マネージャー)

コードページ
非Unicodeテキストのコードページを指定します。

また

フラットファイル接続マネージャーは、次の方法で構成できます。

使用するファイル、ロケール、コードページを指定します。ロケールは、日付などのロケールに依存するデータを解釈するために使用され、コードページは、文字列データをUnicodeに変換するために使用されます

したがって、フラットファイルにUnicodeエンコーディングがある場合:

このプロパティは変更できません。常に元のエンコーディングに戻ります。

コードページ識別子の詳細については、次の記事を参照してください。

6
Hadi

CSVファイル列のテキストストリーム[DT_TEXT]からSQL varchar(max)データ型に変換する場合は、フラットファイルの接続マネージャーエディターのプロパティコードページを1252(ANSI-Latin I)に変更します。

enter image description here

4
Ven