我是SSIS的新手,我遇到了一个问题,我在OLE DB Source步骤中使用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
”格式。
我从研究中知道这是一个数据转换错误,但我不知道如何绕过它,尤其是第一次转换正常工作。
有趣的是,当我将错误行重定向到另一个平面文件时,日期会被拉动并转换为完全没有问题。
我在这里不知所措,并希望得到小组的任何帮助。
答案 0 :(得分:1)
我弄明白为什么它不起作用。当我第一次创建包时,只有生日被转换,因为我的注意力是由于不同的日期格式。在我运行并确认所有数据都被拉出后,我意识到我还需要转换其他4个日期。问题是即使我在sql和平面文件连接管理器中进行了更改,元数据仍然设置为这4个字段的原始设置。我重新创建了步骤,一切都正确转换。感谢您抽出宝贵时间回复