【发布时间】:2015-05-05 20:20:22
【问题描述】:
我正在尝试通过 SSIS 数据流任务将平面文件加载到 SQL Server 中。至于文件,我得到这个形状的列20140311115000,如果我打开Fast Parse: False,如果我将列更改为2014-03-11 11:50:00,我可以得到要导入的列。虽然这不是最优的,因为我无法控制我们提供的上游文件,而且我宁愿不解析每一列/行/表。在我的文件连接中,我将列定义为:DT_DBTIMESTAMP2。在压缩格式中,我收到以下错误:
[ADO NET Destination [2]] Error: System.ArgumentOutOfRangeException:
Year, Month, and Day parameters describe an un-representable DateTime.
at System.DateTime.DateToTicks(Int32 year, Int32 month, Int32 day)...`
有没有办法正确导入较短的列格式 (20140311115000)?
【问题讨论】:
-
您知道真正令人敬畏的是 2008 SSIS 不会失败。我明白了jacked error message in the column itself
-
如果您可以说服上游提供商将值修改为
20140311T115000,那么为这些列设置 FastParse = true 将允许它作为 DT_DBTIMESTAMP2 本地导入 -
感谢@billinkc 的那个选项;它比我知道 Fast Parse 也可以处理的其他形状稍微不那么激烈:
2014-03-11 11:50:00 -
您可以将其导入临时表中的 varchar 列,然后使用 SQL 任务对其进行解析并将其转换为目标表中的时间戳。
-
我不知道这是否是您特别想避免的,或者我会将其作为答案发布。我会将 CSV 文件中的字段定义为字符串字段。然后我会创建一个派生列来用表达式格式化字符串并将其转换为
DT_DBTIMESTAMP2。然后我会用它来导入数据库。你可以找到一个类似的例子here。
标签: sql-server ssis