我有一个电子表格。它包含公司信息,例如姓名,地址,电话,电子邮件等。我想要做的只是将一个平面导入SQL到它可以创建的表中,以便我可以对其进行一些处理。我只是使用MS SQL导入向导。我没有使用BCP。DTS导入失败
它所有的方式获取到结束,给了我这个错误:
Blockquote Operation stopped...
初始化数据流任务(成功)
初始化连接(成功)
设置SQL命令(成功)
设置源连接(成功)
设置目标连接(成功)
验证(成功) 消息 警告0x80049304:数据流任务1:警告:无法打开全局共享内存与性能进行沟通DLL;数据流性能计数器不可用。要解决此问题,请以管理员身份或系统控制台运行此程序包。 (SQL Server导入和导出向导)
准备执行(成功)
预执行(成功)
执行(错误) 消息 错误0xc020901c:数据流任务1 :Source发生错误 - crm_company $ .Outputs [Excel Source Output] .Columns Source上的[Directions] - crm_company $ .Outputs [Excel Source Output]。返回的列状态是:“文本被截断或者一个或多个字符在目标代码页中没有匹配。” (SQL Server导入和导出向导)
错误0xc020902a:数据流任务1: “源 - crm_company $ .Outputs [Excel源输出] .Columns [服法]” 失败,因为发生了截断,和“Source - crm_company $ .Outputs [Excel Source Output] .Columns [Directions]”指定截断时失败的截断行处置。指定组件的指定对象上发生截断错误。 (SQL Server导入和导出向导)
复制到[DBO] [crm_company](停止) 消息 错误0xc0047038:数据流任务1:SSIS错误代码DTS_E_PRIMEOUTPUTFAILED。 Source - crm_company $上的PrimeOutput方法返回了错误代码0xC020902A。当管道引擎调用PrimeOutput()时,组件返回失败代码。失败代码的含义由组件定义,但错误是致命的,并且管道停止执行。在此之前可能会发布错误消息,提供有关失败的更多信息。 (SQL Server导入和导出向导)
后执行(成功) 消息 信息0x4004300b:数据流任务1: “目的地 - crm_company写道:” 469行。 (SQL Server导入和导出向导)所有的
Blockquote
首先,我已经告诉DTS忽略任何截断错误。源字段是int或nvarchar。我编辑映射并将其强制为int,而不是所需列的float。我已将默认列大小从255设置为510.对于2列(方向和注释),它已决定Directions为nvarchar,Notes为nvarchar(max)。我重写Directions one,以便将其视为nvarchar(max),我可以在它运行后创建的表中看到它。但是,当它运行时,每当出现上述错误时都会失败。
我只是想这个数据到一个表。就这样。如果我先手动指定一个表并导入,它仍然是错误的。 Directions中最长的文字长度为978个字符,所以它几乎不是很大。我不在乎它是否截断,我只是不希望它在需要时停下来。有16000行导入,只有470行导入失败。
我不知道哪一行失败,在源文件中,因为奇怪的是,DTS是不拉的数据,在它的顺序,在电子表格中。去搞清楚。我尝试重写DTS愚蠢的尝试,通过粘贴20行文本数据来决定列格式是什么,但仍然失败。
是否有可能为一列值的一个包含列分隔符?或行分隔符? –
这不是CSV导入。这是一个xlsx文件,因此没有任何分隔符。预览很好,并显示正确列中的所有内容。如果你告诉它忽略全局截断和我导入包含一个长度超过1000个字符不再的数据列到一个nvarchar(最大)场,应该没有问题,应该不会发生截断。如果发现任何要截断的内容,它应该忽略它,因为这是我配置它的方式,但它忽略了我的设置。 – snert