首页 > 解决方案 > SSIS IMPORT:Excel 到带有日期列的 sql 服务器(将 unicode 字符串转换为 DT_DBDATE)

问题描述

使用 SSIS Excel Import evrything 很好,除了日期列是来自 excel 源的 DT_WSTR 并且应该是目标表中的 DATE。

excel 列是一种通用格式,我无法控制它,因此无法对其进行编辑。目标表必须具有正确的输出,并且在接收更多要添加到表中的数据时,我将使用相同的包。

首先尝试将数据转换为失败的 DT_DBDATE。

真的不知道如何使用 DERIVED COLUMN 但我在这里尝试了一些类似案例的表达式,但这些表达式不起作用:

 (DT_DBDATE)(MyDateColumn,1,2)+"."+SUBSTRING(MyDateColumn,3,2)+"."+SUBSTRING(MyDateColumn,5,4))

然后我尝试忽略错误并将日期列作为 NULL 复制到表中。

最后我尝试了一个将 OUTPUT 转换为 DT_DATE 的脚本任务:

public override void Input0_ProcessInputRow(Input0Buffer Row)
{
try
{ 
//repeated this for rest of Datecolumns
Row.CopyofMyDateColumn=DateTime.ParseExact(Row.MyDateColumn, "dd/MM/yyyy",CultureInfo.InvariantCulture);
}
Catch (Exception ex)
{
book pbCancel= false;
this.ComponentMetaData.FireError(5, "The component failed to convert the date", "Component error", string.Empty,5, out pbCancel);
}
}

这成功执行,但日期现在都是 1899-12-30。他们全部。还添加了 IMEX=1

我想要的输出是 dd.MM.yyyy

标签: sql-serverexcelssisdata-conversion

解决方案


推荐阅读