3

我正在将 CSV 文件导入现有数据库并遇到一些错误

  • 执行(错误)消息错误 0xc02020a1:数据流任务 1:数据转换失败。“主管”列的数据转换返回状态值 4 和状态文本“文本被截断或目标代码页中有一个或多个字符不匹配。”。(SQL Server 导入和导出向导)

错误 0xc020902a:数据流任务 1:“Source - loc800members_csv.Outputs[Flat File Source Output].Columns[supervisor]”失败,因为发生截断,并且“Source - loc800members_csv.Outputs[Flat File Source Output] 上的截断行处置.Columns[supervisor]" 指定截断失败。指定组件的指定对象发生截断错误。(SQL Server 导入和导出向导)

错误 0xc0202092:数据流任务 1:处理数据行 83 上的文件“C:\Users\administrator.WDS\Desktop\loc800members.csv”时出错。(SQL Server 导入和导出向导)

错误 0xc0047038:数据流任务 1:SSIS 错误代码 DTS_E_PRIMEOUTPUTFAILED。Source - loc800members_csv 上的 PrimeOutput 方法返回错误代码 0xC0202092。当管道引擎调用 PrimeOutput() 时,组件返回了失败代码。失败代码的含义由组件定义,但错误是致命的并且管道停止执行。在此之前可能会发布错误消息,其中包含有关失败的更多信息。(SQL Server 导入和导出向导)

这是我正在导入的表的示例。

http://i.imgur.com/4zsJqgI.jpg

这是主管字段的属性

http://i.imgur.com/r5EonQc.jpg

这是我要导入的表中的列。

i.imgur.com/mD5KlCC.jpg

4

2 回答 2

3

从外观上看,数据库中的字段不足以支持您尝试导入的数据。您需要缩短数据或(可能更理想地)增加数据库中字段的大小。看起来它来自“主管”列(尽管您可能需要仔细检查其他列以确保它也不会在其他地方发生)。

简而言之,正在发生的事情是它试图按原样导入所有内容,并最终在您的 csv 文件中遇到一个太长而无法正确复制的字段。而不是切断剩余的数据(截断),而是抛出一个错误并有效地放弃。我猜数据库中的字段是具有设定大小的 varchar 或 nvarchar 类型。您应该能够在数据库中将其大小向上跳跃以将数据拉入。您可能还需要修改相关的存储过程(如果有的话),因此数据不会在那里被截断。

于 2015-01-07T19:22:16.927 回答
3

您可以在向导中更改字段大小,默认为 50 个字符,这通常太小了。

在“选择数据源”屏幕上,在您提供文件位置并选中您要更改的任何格式内容后,然后单击高级。对于每个字段,您将看到数据类型和输出列宽。将其更改为更大的值。第一次查看文件时,我通常使用 500,直到我能看到实际大小。要一次更改所有列大小,请突出显示第一列的名称,然后按住 shift 键并单击最后一列。然后改变大小。

于 2015-01-07T19:26:34.913 回答