我有一个包含多个字段的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软件包。
答案 0 :(得分:0)
在导入平面文件时,没有元数据可以告诉SSIS文件中保存的数据类型,就像从数据库中导入时一样。
因此,您需要手动设置数据类型以匹配要导入的数据并相应地构建表。
例如,如果您的平面文件包含:
yyyy-mm-dd
您需要将连接管理器设置为要导入,如下所示:
string [DT_STR]
-长度至少为246 Date [DT_DATE]
string [DT_STR]
-长度至少为62 您不能只是猜测数据类型或依靠SSIS来使它们正确。真正了解您的数据并使用适当的格式将其导入。