SQL Server 导入和导出向导

3

我正在将一个CSV文件导入现有的数据库中,但是遇到了一些错误。

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

错误0xc020902a:数据流任务1:由于截断而导致“源 - loc800members_csv.Outputs [Flat File Source Output].Columns [supervisor]”失败,“源 - 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。源 - loc800members_csv上的PrimeOutput方法返回错误代码0xC0202092。当管道引擎调用PrimeOutput()时,组件返回失败代码。失败代码的含义由组件定义,但错误是致命的,并且管道停止执行。可能会在此之前发布有关故障更多信息的错误消息。 (SQL Server导入和导出向导)

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

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

这里是主管字段的属性。

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

这是我正在导入的表中的列。

i.imgur.com/mD5KlCC.jpg

2个回答

3
从看起来的情况来看,数据库中的字段长度不足以支持您尝试导入的数据。您需要缩短数据或(可能更理想的是)增加数据库中字段的大小。看起来它来自“supervisor”列(虽然您可能需要仔细检查其他列以确保它在其他地方也没有发生)。
简而言之,正在尝试将所有内容导入,最终遇到了CSV文件中某个字段过长而无法正确复制的问题。它不会截断剩余数据,而是抛出错误并放弃操作。我猜测数据库中的字段是varchar或nvarchar类型,并且有一个固定的大小。您应该能够直接在数据库中增加此大小以导入数据。您可能还需要修改相关存储过程(如果有),以便在那里不截断数据。

这是我在这个表上的列信息。主管字段是一个Y或N,因此它设置为1。http://i.imgur.com/mD5KlCC.jpg - eggwhites
1
很不幸,我现在正在工作,而imgur.com被屏蔽了。等我回到家后再看看这个问题。我猜你的csv文件中可能在Y或N后面有一些空格,这会导致超出限制。 - user2366842

3
您可以在向导中更改字段大小, 默认为50个字符,通常太小了。
在“选择数据源”屏幕上,在您提供文件位置并勾选要更改的任何格式设置后,单击“高级”。 对于每个字段,您将看到数据类型和输出列宽度。 将其更改为较大的值。 我通常在第一次查看文件时使用500,直到我可以看到实际大小为止。 要同时更改所有列的大小,请突出显示第一列的名称,然后按住Shift键单击最后一列。 然后更改大小。

主管列是一个 Y 或 N - 请参见我对 user2366842 的评论以查看此表列的属性,您将看到主管列设置为 varchar(1)。 - eggwhites
将其拉入具有大列大小的暂存表中,然后您可以查看数据并查看问题所在。 另一个可能导致大小不匹配的原因是无法移植的字符,例如制表符或使用错误的行分隔符。 - HLGEM
感谢您关于分阶段的建议 - 在我这样做之后,我能够滚动浏览我的5k记录,并且错误就像明显的疼痛一样突出。非常感谢您,亲切的网络战士! - eggwhites

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接