3

我对 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' 格式。

我从研究中知道这是一个数据转换错误,但我不知道如何解决它,尤其是在第一次转换正常工作的情况下。

有趣的是,当我将出错的行重定向到不同的平面文件时,日期被提取并转换,完全没有问题。

我在这里不知所措,希望该小组提供任何帮助。

4

1 回答 1

1

我弄清楚为什么它不起作用。当我第一次创建包时,只转换了生日,因为我的注意力集中在不同的日期格式上。在我运行它并验证所有数据都被提取后,我意识到我还需要转换其他 4 个日期。问题是,即使我在 sql 和平面文件连接管理器中进行了更改,元数据仍然设置为这 4 个字段的原始设置。我重新创建了这一步,一切都正确转换了。感谢您花时间回复

于 2012-12-04T15:56:45.937 回答