SSIS gibt eine Unicode-Zeichenfolge als Shift-JIS-Zeichencode in eine Textdatei aus

Erstellungsdatum der Seite :

Muster, die zu Fehlern führen

Angenommen, eine Spalte vom Typ nvarchar in einer Tabelle in SQL Server verfügt über eine Zeichenfolge, die in Shift-JIS nicht verwendet werden kann. Übrigens, wenn Sie diese Zeichen in die varchar-Spalte einfügen, gibt es Zeichen, die nicht verwendet werden können, z. B. die Spalte "ColumnShiftJis" auf der rechten Seite. Ersetzen Sie es.

Unicode 文字をデータベースのテーブルに入れる

In SSIS wird der Fluss so eingerichtet, dass Daten aus der vorherigen Tabelle wie in der Abbildung dargestellt gelesen und in eine Textdatei ausgegeben werden.

テキストファイルへ出力する様にフローを構築

Angenommen, Sie möchten es als CSV-Datei ausgeben. Da Shift-JIS häufig in CSV-Dateien verwendet wird, setzen Sie die Zeichenkodierung der Textdatei auf Shift-JIS.

文字コードを Shift-JIS に設定

Wenn Sie mit dieser Einstellung ausführen, tritt zum Zeitpunkt der Ausgabe ein Fehler auf.

テキストファイル書き込み時にエラー

Eine Fehlermeldung ähnlich der folgenden wird angezeigt:

エラー内容

Die Ausgabedatei wird auch auf halbem Weg unterbrochen, wenn der Fehler aufgetreten ist.

出力されたテキスト

Wenn Sie versuchen, so auszugeben, wie es ist, wird es ein Fehler sein, also versuchen Sie, "Datenkonvertierung" in der Mitte zu integrieren.

データ変換 追加

Konvertieren Sie den Datentyp von "DT_WSTR" in "DT_STR" und machen Sie ihn in ein Formular, das in Shift-JIS ausgegeben werden kann.

「DT_WSTR」から「DT_STR」に変換

Wenn Sie dies jedoch auch ausführen, erhalten Sie eine Fehlermeldung. Dies liegt daran, dass SSIS die implizite Verarbeitung, die dazu führt, dass Daten fehlen, strikt versagt. Wenn SSIS eine Textverarbeitung ausführen soll, müssen Sie die Zeichenersetzung für alle Zeichen explizit angeben.

データ変換エラー

Problemumgehungen

Es gibt eine Möglichkeit, den Texttyp mithilfe von SQL zu ändern, wenn Sie aus einer Tabelle in einer Datenbank lesen. Wenn es sich um SQL handelt, wird es vom SQL Server-Modul ausgeführt, nicht von SSIS, sodass es ohne Fehler ausgeführt werden kann. Übrigens sind alle Zeichen, die in Shift-JIS nicht verwendet werden können, "?" Konvertiert in: Dies ist eine serverseitige Spezifikation für SQL Server. Auch wenn es sich nicht um SSIS handelt, ist das Ergebnis für alle Systeme, die SQL Server verwenden, ähnlich.

Öffnen Sie ADO NET Translator, und ändern Sie den Datenzugriffsmodus in SQL-Befehl. Nachdem Sie nun SQL eingeben können, schreiben Sie eine Select-Anweisung, um Daten aus der Datenbank abzurufen. Text, der Zeichen enthält, die in Shift-JIS nicht verwendet werden können, wird mithilfe von "cast" zwangsweise in varchar konvertiert.

SQL で varchar に変換

Da Zeichen, die in Shift-JIS nicht verwendet werden können, bereits zum Zeitpunkt des Datenflusses an SSIS entfernt wurden, kann die Verarbeitung so übergeben werden, wie sie ist.

処理成功

Sie können sehen, dass der Text erfolgreich in die CSV-Datei geschrieben wurde. Außerdem sind alle Zeichen, die in Shift-JIS nicht verwendet werden können, "?" Sie können sehen, dass es konvertiert wurde in:

出力されたテキスト