我是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
我收到以下错误:"The value could not be converted because of a potential loss of data"即使所有内容都使用相同的设置进行了重现 . 此转换将日期转换为' DDMMYYYY
'格式 .
我从研究中得知这是一个数据转换错误,但我不知道如何绕过它,尤其是第一次转换正常工作 .
有趣的是,当我将错误行重定向到不同的平面文件时,日期会被拉动并转换为完全没有问题 .
我在这里不知所措,并希望得到小组的任何帮助 .
1 回答
我弄清楚它为什么不起作用 . 当我第一次创建包时,只有生日被转换,因为我的注意力是由于不同的日期格式 . 在我运行并确认所有数据都被拉出后,我意识到我还需要转换其他4个日期 . 问题是即使我在sql和平面文件连接管理器中进行了更改,元数据仍然设置为这4个字段的原始设置 . 我重新创建了步骤,一切都正确转换 . 感谢您抽出宝贵时间作出回应