SSIS平面文件源sql目标错误

时间:2018-08-02 02:33:38

标签: sql-server ssis ssis-2012

我有一个包含多个字段的csv文件,所有字段都显示为:

Datatype - string [DT_STR]
OutputColumnWidth - 50

到我的输出SQL表的映射是针对所有varchar(50)字段的。

我正在使用SQL Server 2012,并且正在使用SQL Server Native Client 11.0。

我收到以下截断错误:

Messages
Error 0xc02020a1: Data Flow Task 1: Data conversion failed. The data conversion for column "Description" returned status value 4 and status text "Text was truncated or one or more characters had no match in the target code page.".
 (SQL Server Import and Export Wizard)

Error 0xc020902a: Data Flow Task 1: The "Source - myfilename_CSV.Outputs[Flat File Source Output].Columns[Description]" failed because truncation occurred, and the truncation row disposition on "Source - myfilename_CSV.Outputs[Flat File Source Output].Columns[Description]" specifies failure on truncation. A truncation error occurred on the specified object of the specified component.
 (SQL Server Import and Export Wizard)

我该如何解决?

我试图在源中将该列设置为

Datatype - string [DT_STR]
OutputColumnWidth - 200

在目标sql表上,将其设置为varchar(200)。

这样做之后,其他几列会触发相同的错误,并且如上所述,我更改了源和目标的宽度。

程序包仍然失败。为什么这行不通?

我已经尝试使用SQL Server 2012和2015。我同时使用了导入向导和实际的sis软件包。

1 个答案:

答案 0 :(得分:0)

在导入平面文件时,没有元数据可以告诉SSIS文件中保存的数据类型,就像从数据库中导入时一样。

因此,您需要手动设置数据类型以匹配要导入的数据并相应地构建表。

例如,如果您的平面文件包含:

  • Col1-字符串-文件中的最大长度为246个字符
  • Col2-日期-格式为yyyy-mm-dd
  • Col3-字符串-文件中的最大长度为62个字符

您需要将连接管理器设置为要导入,如下所示:

  • Col1-string [DT_STR]-长度至少为246
  • Col2-Date [DT_DATE]
  • Col3-string [DT_STR]-长度至少为62

您不能只是猜测数据类型或依靠SSIS来使它们正确。真正了解您的数据并使用适当的格式将其导入。