SSIS wyprowadza ciąg Unicode jako kod znaku Shift-JIS do pliku tekstowego
Wzorce powodujące błędy
Załóżmy, że kolumna typu nvarchar w tabeli na sql Server ma ciąg, którego nie można użyć w Shift-JIS. Nawiasem mówiąc, jeśli umieścisz te znaki w kolumnie varchar, istnieją znaki, których nie można użyć, takie jak kolumna "ColumnShiftJis" po prawej stronie. Wymień go.
W usługach SSIS przepływ jest skonfigurowany do odczytywania danych z poprzedniej tabeli, jak pokazano na rysunku, i wyprowadzania ich do pliku tekstowego.
Załóżmy, że chcesz go wyprowadzić jako plik CSV. Ponieważ Shift-JIS jest często używany w plikach CSV, ustaw kodowanie znaków pliku tekstowego na Shift-JIS.
Jeśli wykonasz z tym ustawieniem, wystąpi błąd w czasie wyjścia.
Zostanie wyświetlony komunikat o błędzie podobny do następującego:
Plik wyjściowy zostanie również przerwany w połowie, gdy wystąpi błąd.
Jeśli spróbujesz wyprowadzić tak, jak jest, będzie to błąd, więc spróbuj włączyć "konwersję danych" w środku.
Przekonwertuj typ danych z "DT_WSTR" na "DT_STR" i przekształć go w formularz, który można wyprowadzić do Shift-JIS.
Jeśli jednak wykonasz to również, pojawi się błąd. Wynika to z faktu, że usługi SSIS ściśle nie działają niejawne przetwarzanie, co powoduje brak danych. Jeśli chcesz, aby usługi SSIS wykonywały przetwarzanie tekstu bez wpisań, musisz jawnie określić podstawianie znaków dla wszystkich znaków.
Obejścia
Istnieje sposób zmiany typu tekstu za pomocą języka SQL podczas czytania z tabeli w bazie danych. Jeśli jest to SQL, to aparat SQL Server, który go uruchamia, a nie SSIS, więc może działać bez błędów. Nawiasem mówiąc, wszystkie znaki, których nie można użyć w Shift-JIS, to "?" Przekonwertowano na: Jest to specyfikacja po stronie programu SQL Server. Nawet jeśli nie jest to SSIS, wynik jest podobny dla wszystkich systemów korzystających z programu SQL Server.
Otwórz ADO NET Translator i zmień tryb dostępu do danych na SQL Command. Teraz, gdy możesz wprowadzić SQL, napisz instrukcję Select, aby pobrać dane z bazy danych. Tekst zawierający znaki, których nie można użyć w kombinacji Shift-JIS, jest przymusowo konwertowany na varchar za pomocą cast.
Ponieważ znaki, których nie można używać w Shift-JIS, zostały już usunięte w momencie przepływu danych do SSIS, przetwarzanie można przekazać tak, jak jest.
Widać, że tekst został pomyślnie zapisany w pliku CSV. Ponadto wszystkie znaki, których nie można użyć w Shift-JIS, to "?" Widać, że został przekonwertowany na: