SSIS xuất ra chuỗi Unicode dưới dạng mã ký tự Shift-JIS cho tệp văn bản
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ó.
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.
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.
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.
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: