Vì vậy, tôi hiện đang làm việc trên di chuyển từ máy chủ cơ sở dữ liệu Advantage cũ sang SQL 2005 bằng SSIS 2008. Một trong các cột trong cơ sở dữ liệu Advantage cũ là kiểu MEMO. Theo mặc định, dịch này sẽ chuyển thành cột DT_TEXT. Trong cơ sở dữ liệu mới, tôi không cần nhiều lĩnh vực này, nhưng có thể giới hạn nó thành một thứ gì đó như VARCHAR (50). Tôi đã thiết lập thành công phép biến đổi cột có nguồn gốc để chuyển đổi điều này với biểu thức sau:SSIS ISNULL để trống chuỗi
(DT_STR,50,1252)[ColumnName]
Bây giờ tôi muốn tiến thêm một bước và thay thế tất cả các giá trị NULL bằng một chuỗi rỗng. Điều này dường như dễ dàng, đủ sử dụng một biểu thức ISNULL([ColumnName])?"":(DT_STR,50,1252)[ColumnName]
, nhưng vấn đề là các Destination OLE DB chứa các lỗi sau
Không thể chuyển đổi giữa unicode và phi unicode dây ...
Vì vậy, rõ ràng là toàn bộ biểu thức ISNULL chuyển đổi kiểu dữ liệu thành chuỗi Unicode [DT-WSTR]. Tôi đã thử một loạt các phôi trên toàn bộ biểu thức hoặc các phần khác nhau, nhưng tôi không thể có được kiểu dữ liệu để phù hợp với những gì tôi cần.
Trước tiên, có thể chuyển đổi loại DT_TEXT trực tiếp thành unicode không? Từ những gì tôi có thể nói, các phôi không hoạt động theo cách đó. Nếu không, là có một cách để có được một biểu thức để làm việc để giá trị NULL được chuyển đổi thành chuỗi rỗng?
Cảm ơn sự giúp đỡ của bạn!
Tôi đã thử tính năng này trong nhiều lần thử. Tôi thậm chí đã đi xa như để làm điều này (DT_STR, 50,1252) (ISNULL (ColumnName)? (DT_STR, 1,1252) "": (DT_STR, 50,1252) ColumnName ... vẫn không có may mắn. Tôi đánh giá cao ý tưởng, và trừ khi tôi đã làm điều gì đó sai với việc đúc của tôi, nó đã kết thúc không hoạt động –