我对 SSIS 很陌生,我遇到了一个问题,我在 OLE DB 源步骤中使用 sql 语句来提取我的数据,并且该数据包含 5 个需要转换的 DATETIME 字段和所有数据正在进入一个平面文件。
我正在像这样在 sql 中进行转换:
REPLACE(CONVERT(VARCHAR(10), birthdate, 101), '/', '') AS 'Date of Birth (MMDDYYYY)
在 SSIS 平面文件连接管理器中,我的 DataType 是字符串 [DT_STR],我的 OutputColumnWidth 是 8。这在 SSIS 中工作而无需截断,因为上述转换创建了一个 8 个字符的 varchar。如果我尝试转换为 varchar(8),它会截断 sql server management studio 中的数据。
我的问题是我的下一次转换尝试失败了。这是sql代码:
REPLACE(CONVERT(VARCHAR(10), exp_date, 103), '/', '') AS 'Expiration Date
我收到以下错误:“由于可能丢失数据,无法转换该值”,即使所有内容都已使用相同的设置进行了复制。此转换将日期转换为 ' DDMMYYYY
' 格式。
我从研究中知道这是一个数据转换错误,但我不知道如何解决它,尤其是在第一次转换正常工作的情况下。
有趣的是,当我将出错的行重定向到不同的平面文件时,日期被提取并转换,完全没有问题。
我在这里不知所措,希望该小组提供任何帮助。