2013-02-15 40 views
0

我有一个文件要使用SSIS 2005加载到SQL Server 2005中。在错误输出文本文件中更改了日期格式

该文件有一个日期字段。数值类似于'12/01/2010 16:38:51'

文件中的某些行是错误的,将被重定向到一个文本文件。但在文本文件中,SSIS会将日期更改为2010-01-12 16:38:51

无论如何只是将错误行重定向到文本文件没有任何修改?

+0

SSIS只是用与服务器配置相同的方式写日期。更改您的区域设置以匹配第一个日期格式。 – 2013-02-15 15:40:51

+0

我无法更改区域设置。我的意思是输入文件中的日期格式可以是不同的格式。我不会更改区域设置以适应导入文件。如果日期格式将来发生变化会怎样?我的意思是不能ssis只是将重定向的行像字符串或其他东西一样写入文件? – thotwielder 2013-02-15 17:20:22

+2

是的,如果你定义了元数据,SSIS可以把它当作一个字符串。如果它更改格式,那是因为您将输入列映射为日期。 – 2013-02-15 18:15:19

回答

0

我发现如果在平面文件源的高级编辑器的平面文件错误输出的输出列是“平面文件源错误输出列”(和该列的类型应该是文本流[DT_TEXT]默认),那么我的问题就解决了。这样,错误输出的平面文件管理器将自动将输出列设置为'平面文件源错误输出列'和'文本流[DT_TEXT]'类型。这正是我想要的。 SSIS将整行视为'文本流[DT_TEXT]'类型的单个列,然后重定向。这似乎是SSIS的默认行为。但在我的原始软件包中,我不知怎么搞砸了,让输入中的每列都映射到错误输出中的一列。然后有问题,因为SSIS正在做日期转换的事情。

无论如何感谢您的帮助。

0

您始终可以使用派生列并使用日期的部分格式化日期时间。

(DT_WSTR, 20) (DT_WSTR, 2) RIGHT("0" + (DT_WSTR,2)MONTH(<DATE_IN_QUESTION>),2) + "/" + 
(DT_WSTR, 2) RIGHT("0" + (DT_WSTR,2)DAY(<DATE_IN_QUESTION>),2) + "/" + 
(DT_WSTR,4)YEAR(<DATE_IN_QUESTION>) + " " + 
(DT_WSTR, 2)DATEPART("Hh", <DATE_IN_QUESTION>) + ":" + 
(DT_WSTR, 2)DATEPART("mi", <DATE_IN_QUESTION>) + ":" + 
(DT_WSTR, 2) RIGHT("0" + (DT_WSTR, 2)DATEPART("ss", <DATE_IN_QUESTION>),2)  
+0

是的,我知道派生列可以用来做任何需要的格式。但我的问题是重定向的行应保持原始格式,而不需要任何手动操作。 – thotwielder 2013-02-18 11:02:17