2017-08-16 172 views
0

我有一个电子表格。它包含公司信息,例如姓名,地址,电话,电子邮件等。我想要做的只是将一个平面导入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行文本数据来决定列格式是什么,但仍然失败。

+0

是否有可能为一列值的一个包含列分隔符?或行分隔符? –

+0

这不是CSV导入。这是一个xlsx文件,因此没有任何分隔符。预览很好,并显示正确列中的所有内容。如果你告诉它忽略全局截断和我导入包含一个长度超过1000个字符不再的数据列到一个nvarchar(最大)场,应该没有问题,应该不会发生截断。如果发现任何要截断的内容,它应该忽略它,因为这是我配置它的方式,但它忽略了我的设置。 – snert

回答

0

建议:

如果你有Visual Studio的BI然后制定一个SSIS包和:

1)尝试添加一个分支失败的行重定向这些。你可以通过添加一条来自excel源代码的红线来实现。运行包后,您可以对成功和失败的行进行一些分析。

2)重要的是你用什么类型的连接为SQL Server。我有很多原生SQL客户端的问题,所以我更喜欢使用ADO.NET或OLE DB连接类型。

随着向导:

3)尽量使用类型转换

4)将文件保存到TXT然后执行ETL。

+0

我有SQL Server Management Studio,我右键点击数据库,选择任务 - >导入数据。这是一次性导入,所以我可以将数据导入登台表中供以后处理。我没有Visual Studio BI。通过导入向导创建的连接是目标上的Excel源连接和SQL Server Native Client连接。我不知道ETL是什么。 – snert

+0

ETL代表提取,转换和加载。应用程序之间的数据传输variouos环境称为ETL工具,甚至复制活动被称为“ETL数据”。SQL Server应该与Visual Studio for Business Intelligence一起提供(如果安装材料可用,可以稍后添加),并且它是用于数据传输和处理的非常强大的工具。当数据导入出现问题时,我认为使用SQL Server的导入/导出数据应用程序是一种很好的方法,可以保存包并将其用于调试/开发目的。希望这可以帮助。 –

0

我试了很多事情来解决这个问题,并发现它容易得多电子表格导入Access,然后导入访问SQL。工作在5分钟内完成。