星云外

3月11日工作笔记——sql server 2008

将txt导入到sql server总是出问题

=====================

- 正在执行 (错误)
消息
错误 0xc02020a1: 数据流任务 1: 数据转换失败。列“列 4”的数据转换返回状态值 4 和状态文本“文本被截断,或者一个或多个字符在目标代码页中没有匹配项。”。
 (SQL Server 导入和导出向导)
 
错误 0xc020902a: 数据流任务 1: “输出列“列 4”(26)”由于发生截断而失败,而且针对“输出列“列 4”(26)”的截断行处理设置指定截断时出错。在指定组件的指定对象上出现截断错误。
 (SQL Server 导入和导出向导)
 
错误 0xc0202092: 数据流任务 1: 处理文件“E:\DataBuffer\SogouQ\access_log.20060801.decode.txt”的数据行 9 时出错。
 (SQL Server 导入和导出向导)
 
错误 0xc0047038: 数据流任务 1: SSIS 错误代码 DTS_E_PRIMEOUTPUTFAILED。组件“源 - access_log_20060801_decode_txt”(1) 的 PrimeOutput 方法返回了错误代码 0xC0202092。管道引擎调用 PrimeOutput() 时该组件返回了一个失败代码。虽然该失败代码只与该组件有关,但这个错误是致命的,管道已停止执行。可能在此之前已经发出错误消息,提供了有关失败的详细信息。
 (SQL Server 导入和导出向导)

======================

 

++++++++++++++++++++++

 可能的解决方法

1 典型的错误信息如下:

消息
* 错误 0xc02020a1: 数据流任务: 数据转换失败。列“列 2”的数据转换返回状态值 4 和状态文本“文本被截断,或者一个或多个字符在目标代码页中没有匹配项。”。
(SQL Server 导入和导出向导)
* 错误 0xc020902a: 数据流任务: “输出列“列 2”(18)”由于发生截断而失败,而且针对“输出列“列 2”(18)”的截断行处理设置指定截断时出错。在指定组件的指定对象上出现截断错误。
(SQL Server 导入和导出向导)
* 错误 0xc0047038: 数据流任务: SSIS 错误代码 DTS_E_PRIMEOUTPUTFAILED。组件“源 -11_txt”(1) 的 PrimeOutput 方法返回了错误代码 0xC0202092。管道引擎调用 PrimeOutput()时该组件返回了一个失败代码。虽然该失败代码只与该组件有关,但这个错误是致命的,管道已停止执行。可能在此之前已经发出错误消息,提供了有关失败的详细信息。
(SQL Server 导入和导出向导)
* 错误 0xc0047021: 数据流任务: SSIS 错误代码 DTS_E_THREADFAILED。 线程“SourceThread0”已退出,错误代码为 0xC0047038。可能在此之前已经发出错误消息,提供了有关线程退出原因的详细信息。
(SQL Server 导入和导出向导)
* 错误 0xc0047039: 数据流任务: SSIS 错误代码DTS_E_THREADCANCELLED。线程“WorkThread0”接收到关闭信号,正在终止。原因是用户请求了关闭,或另一线程中的错误导致该管道关闭。可能在此之前已经发出错误消息,提供了有关取消线程的原因的详细信息。
(SQL Server 导入和导出向导)

 

2 故障分析:
理由很简单,默认的平文件,每个字段的宽度是50,
如果你的平面数据源的字段超过这个,则会出现上面这个错误。

3 解决方案

也很简单,在高级里面,手工设定每个字段允许的最大宽度就行了

 

把最后一个字段改成了8000就OK了!插入的成功条数和Access里面的一样了。恩,这样岂不是很浪费空间……

接下来也得考虑怎么convert数据类型

++++++++++++++++++++++

今天纠结不行了,因为直接导入不OK,就想先导入到Access里,再导入sql(这里面大概每一百万条就有100条错误,截断错误,是因为特殊字符吗?但出现的列属性是int,应该是txt本身的问题)。结果2008只接受.mdb不接受.accdb,囧……(哪位大牛知道怎么导入.accdb,请赐教),然后试着从Access里导出Excel,结果导入倒是成功的,但巨慢。最后从Access里导出的txt(出去了那些可能已经损坏的行),把出错异常响应都改成忽略,还是不行。结果看到最后一行中的错误(0xC0202092),Google了才知道……

明天试试……虽然不知道行不行,不行就只能读到数据流里面一条一条insert……- -#

sigh~下次一定要看完所有错误……冲动是魔鬼……

posted on 2010-03-11 21:46  星云外  阅读(2077)  评论(0编辑  收藏  举报