当数字以外的字符时,从平面文件DT_WSTR到nvarchar(255)字段的SSIS转换为空

时间:2013-04-15 18:49:39

标签: sql-server-2008 ssis bids

我在数据转换和从平面文件导入到SQL Server数据库方面遇到了一个奇怪的问题。问题在于,在某些字段中,存在整数和字符串,例如9012635和54Z2534,234-1823。

在我所有字段的SSIS包中都有一个数据类型为pf DT_WSTR(255),数据正在插入nvarchar(255)。最初我使用import export wizzard创建了包,然后进行了修改(但没有进行修改。我接受了向导给出的内容(即DT_WSTR)。它最终没有将数据导入到这些字段中。它创建了行和插入数据到其他列,但在某些列,它放置NULL - 没有数据。

为了测试,我最终尝试使用该文件的向导。我收到一个错误:“采样数据中的最后一行是不完整的。列或行分隔符可能丢失或文本合格不正确”。

尽管如此,该文件仍会导入所有行,但似乎不喜欢这些列中的文本,只是最终将整数值作为文本导入。

未提供此错误消息的其他文件也具有相同的症状。

我不知道如何解决这个问题,或者问题是什么。

1 个答案:

答案 0 :(得分:4)

NVARCHAR应对应于DT_WSTR,而VARCHAR应对应于DT_STR。你确定这两种类型之间不存在转换问题吗?如果您有真正的DT_I4整数,则不应该看到字母字符。

您可以在数据流中添加Data Viewer,以确切了解SSIS包中的数据类型。

如果您希望转换字符串类型,可以使用Derived Column Transform创建新列,然后cast one string type into another

因此,例如,(DT_STR,30,1252)OldColumnName将根据代码页1252将NVARCHAR的三十个字符转换为VARCHAR。或者,(DT_WSTR,50)ColName会将五十个VARCHAR字符转换为NVARCHAR。