【问题标题】:Date format changed in error output text file错误输出文本文件中的日期格式已更改
【发布时间】:2013-02-15 13:48:18
【问题描述】:

我有一个文件要使用 SSIS 2005 加载到 SQL Server 2005 中。

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

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

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

【问题讨论】:

  • SSIS 只是以与服务器配置相同的方式写入日期。更改您的区域设置以匹配第一个日期格式。
  • 我无法更改区域设置。我的意思是输入文件中的日期格式可以是不同的格式。我不会更改区域设置以适应导入文件。如果将来日期格式发生变化怎么办?我的意思是不能 ssis 只是将重定向的行视为字符串或其他东西并将其写入文件吗?
  • 是的,如果您这样定义元数据,SSIS 可以将其视为字符串。如果它改变格式,那是因为您将输入列映射为日期。
  • 是的,我一直在玩这个。比如将输入列类型更改为字符串等。但我发现问题与输入列类型无关。现在输入的列类型仍然是datebase_timestamp,输出的错误行可以保持原来的日期格式。我不知道究竟是什么解决了这个问题,因为我改变了很多东西。

标签: sql-server sql-server-2005 ssis ssis-2005


【解决方案1】:

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

(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)    

【讨论】:

  • 是的,我知道派生列可用于执行所需的任何格式。但我的问题是重定向的行应该保持原始格式,无需任何手动操作。
【解决方案2】:

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

无论如何感谢您的帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-09-28
    • 1970-01-01
    • 1970-01-01
    • 2019-04-09
    • 2017-02-27
    • 1970-01-01
    • 2018-07-31
    相关资源
    最近更新 更多