SSIS xuất ra chuỗi Unicode dưới dạng mã ký tự Shift-JIS cho tệp văn bản

Ngày tạo trang :

Các mẫu dẫn đến lỗi

Giả sử rằng một cột nvarchar loại trong bảng trên SQL Server có một chuỗi không thể được sử dụng trong Shift-JIS. Nhân tiện, nếu bạn đặt các ký tự này vào cột varchar, có những ký tự không thể được sử dụng, chẳng hạn như cột "ColumnShiftJis" ở bên phải. Thay thế nó.

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

Trên SSIS, luồng được thiết lập để đọc dữ liệu từ bảng trước đó như được hiển thị trong hình và xuất nó vào tệp văn bản.

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

Giả sử rằng bạn muốn xuất nó dưới dạng tệp CSV. Vì Shift-JIS thường được sử dụng trong các tệp CSV, hãy đặt mã hóa ký tự của tệp văn bản thành Shift-JIS.

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

Nếu bạn thực hiện với cài đặt này, lỗi sẽ xảy ra tại thời điểm đầu ra.

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

Một thông báo lỗi tương tự như sau đây xuất hiện:

エラー内容

Tệp đầu ra cũng sẽ bị gián đoạn giữa chừng khi lỗi xảy ra.

出力されたテキスト

Nếu bạn cố gắng xuất ra như hiện tại, nó sẽ là một lỗi, vì vậy hãy thử kết hợp "chuyển đổi dữ liệu" ở giữa.

データ変換 追加

Chuyển đổi loại dữ liệu từ "DT_WSTR" thành "DT_STR" và biến nó thành một biểu mẫu có thể được xuất ra cho Shift-JIS.

「DT_WSTR」から「DT_STR」に変換

Tuy nhiên, nếu bạn cũng thực hiện điều này, bạn sẽ nhận được một lỗi. Điều này là do SSIS hoàn toàn thất bại trong việc xử lý ngầm khiến dữ liệu bị thiếu. Nếu bạn muốn SSIS thực hiện xử lý kiểu văn bản, bạn sẽ cần chỉ định rõ ràng việc thay thế ký tự cho tất cả các ký tự.

データ変換エラー

Giải pháp thay thế

Có một cách để thay đổi loại văn bản sử dụng SQL khi đọc từ bảng trong cơ sở dữ liệu. Nếu đó là SQL, đó là công cụ SQL Server chạy nó, không phải SSIS, vì vậy nó có thể chạy mà không có lỗi. Nhân tiện, tất cả các ký tự không thể được sử dụng trong Shift-JIS là "?" Chuyển đổi sang: Đây là đặc điểm kỹ thuật bên SQL Server. Ngay cả khi nó không phải là SSIS, kết quả là tương tự cho tất cả các hệ thống sử dụng SQL Server.

Mở ADO NET Translator và thay đổi chế độ truy nhập dữ liệu thành SQL Command. Bây giờ bạn có thể nhập SQL, hãy viết câu lệnh Chọn để lấy dữ liệu từ cơ sở dữ liệu. Văn bản có chứa các ký tự không thể được sử dụng trong Shift-JIS bị buộc phải chuyển đổi thành varchar bằng cách sử dụng diễn viên.

SQL で varchar に変換

Vì các ký tự không thể được sử dụng trong Shift-JIS đã bị xóa tại thời điểm dữ liệu chảy vào SSIS, việc xử lý có thể được thông qua như hiện tại.

処理成功

Bạn có thể thấy rằng văn bản được viết thành công cho CSV. Ngoài ra, tất cả các ký tự không thể được sử dụng trong Shift-JIS là "?" Bạn có thể thấy rằng nó đã được chuyển đổi thành:

出力されたテキスト