我正在将CSV文件导入现有数据库并收到一些错误
- 执行(错误) 消息 错误0xc02020a1:数据流任务1:数据转换失败。列"主管"的数据转换返回状态值4和状态文本"文本被截断或目标代码页中的一个或多个字符不匹配。"。 (SQL Server导入和导出向导)
错误0xc020902a:数据流任务1:"源 - loc800members_csv.Outputs [平面文件源输出] .Columns [主管]"失败,因为截断发生,截断行处置"源 - loc800members_csv.Outputs [平面文件源输出] .Columns [主管]"指定截断失败。指定组件的指定对象上发生截断错误。 (SQL Server导入和导出向导)
错误0xc0202092:数据流任务1:处理文件时发生错误" C:\ Users \ administrator.WDS \ Desktop \ loc800members.csv"在数据行83上。 (SQL Server导入和导出向导)
错误0xc0047038:数据流任务1:SSIS错误代码DTS_E_PRIMEOUTPUTFAILED。 Source上的PrimeOutput方法 - loc800members_csv返回错误代码0xC0202092。当管道引擎调用PrimeOutput()时,组件返回失败代码。失败代码的含义由组件定义,但错误是致命的,管道停止执行。在此之前可能会发布错误消息,其中包含有关失败的更多信息。 (SQL Server导入和导出向导)
以下是我要导入的表的示例。
以下是主管领域的属性
以下是我要导入的表格中的列。
i.imgur.com/mD5KlCC.jpg
答案 0 :(得分:3)
从外观上看,数据库中的字段不够长,无法支持您尝试导入的数据。您需要缩短数据或(可能更理想地)增加数据库中字段的大小。看起来它来自“主管”专栏(尽管您可能想要仔细检查其他列,以确保它不会在其他地方发生)。
简而言之,正在发生的事情是,它正在尝试按原样导入所有内容,并最终命中csv文件中的字段太长而无法正确复制。而不是砍掉剩余的数据(截断)而不是抛出错误并有效地放弃。我猜测数据库中的字段是varchar或nvarchar类型,具有设置大小。您应该能够在数据库中快速调整大小以提取数据。您可能还需要修改相关的存储过程(如果有的话),因此数据不会被截断。
答案 1 :(得分:2)
您可以在向导中更改字段大小,默认值为50个字符,这通常太小。
在"选择数据源"屏幕,在您给出文件位置并检查了要更改的任何格式之后,然后单击高级。对于每个字段,您将看到数据类型和输出列宽。将其更改为更大的值。我第一次看文件时通常使用500,直到我看到实际尺寸是什么。要一次更改所有列大小,请突出显示第一列的名称,然后按住Shift键并单击最后一列。然后改变大小。