SSIS:从CSV文件读取中文日期并插入SQL表

SSIS:从CSV文件读取中文日期并插入SQL表,sql,ssis,Sql,Ssis,我有一个CSV文件,该文件包含empname和emp加入日期。CSV文件中的所有文本均为中文。 范例 我想读取此datetime列,并使用SSIS包将其插入SQL表中。 我收到下面的错误消息 [OLE DB Destination [9]] Error: There was an error with input column "工资结束期" (85) on input "OLE DB Destination Input" (22). The column status returned wa

我有一个CSV文件,该文件包含empname和emp加入日期。CSV文件中的所有文本均为中文。 范例

我想读取此datetime列,并使用SSIS包将其插入SQL表中。 我收到下面的错误消息

[OLE DB Destination [9]] Error: There was an error with input column "工资结束期" (85) on input "OLE DB Destination Input" (22). 
The column status returned was: "The value could not be converted because of a potential loss of data.".

我猜您可能正在尝试在较小的sql表列中插入较大的列。如果是,您有两种选择:

  • 使sql表列变大
  • 从CSV文件中生成较小的列
  • 第二个选项可以插入“派生列”元素,并使用旧列子字符串添加新列(如下所示):

    编辑

    您可以在日期使用派生列元素:

    (DT_DBDATE)(SUBSTRING("2008年12月18日",1,4) +"-"+ SUBSTRING("2008年12月18日",6,2)
    + "-" + SUBSTRING("2008年12月18日",8,2))
    

    只需更改
    “2008年12月18日"到您的列。

    错误在目标元素上,显示sql表中的列类型和大小以及数据类型和大小工资结束期 列是。我猜您正在尝试在较小的sql表列中插入较大的列。。。
    SUBSTRING(工资结束期, 1, 22)
    
    (DT_DBDATE)(SUBSTRING("2008年12月18日",1,4) +"-"+ SUBSTRING("2008年12月18日",6,2)
    + "-" + SUBSTRING("2008年12月18日",8,2))