scr*_*rot 15 sql-server import excel
简而言之,我将逐一获取一堆excel文档,并使用导入/导出向导将它们导入SQL Server 2005中的数据库.
这是一个报告(所有未显示的流程都是"成功").有没有办法让我忽略截断错误?我用谷歌搜索无效,或者至少不在我的版本中.
Run Code Online (Sandbox Code Playgroud)- Executing (Success) - Copying to [Datadev].[dbo].[Sheet0$] (Error) Messages * Error 0xc020901c: Data Flow Task: There was an error with output输出"Excel源输出"(9)的"值含义描述"(234)列.返回的列状态为:"文本被截断,或者目标代码页中的一个或多个字符不匹配.".(SQL Server导入和导出向导)
Run Code Online (Sandbox Code Playgroud)* Error 0xc020902a: Data Flow Task: The "output column "Value含义说明"(234)"失败,因为发生了截断,并且"输出列"上的截断行处置值含义描述"(234)"指定截断失败.指定组件的指定对象上发生截断错误.(SQL Server导入和导出向导)
Run Code Online (Sandbox Code Playgroud)* Error 0xc0047038: Data Flow Task: SSIS Error CodeDTS_E_PRIMEOUTPUTFAILED.组件"Source - Sheet0 $"(1)上的PrimeOutput方法返回错误代码0xC020902A.当管道引擎调用PrimeOutput()时,组件返回失败代码.失败代码的含义由组件定义,但错误是致命的,管道停止执行.在此之前可能会发布错误消息,其中包含有关失败的更多信息.(SQL Server导入和导出向导)
Run Code Online (Sandbox Code Playgroud)* Error 0xc0047021: Data Flow Task: SSIS Error CodeDTS_E_THREADFAILED.线程"SourceThread0"已退出,错误代码为0xC0047038.在此之前可能会发布错误消息,其中包含有关线程退出原因的更多信息.(SQL Server导入和导出向导)
Run Code Online (Sandbox Code Playgroud)* Error 0xc0047039: Data Flow Task: SSIS Error CodeDTS_E_THREADCANCELLED.线程"WorkThread0"收到关闭信号并正在终止.用户请求关闭,或者另一个线程中的错误导致管道关闭.在此之前可能会发布错误消息,其中包含有关线程被取消原因的更多信息.(SQL Server导入和导出向导)
Run Code Online (Sandbox Code Playgroud)* Error 0xc0047021: Data Flow Task: SSIS Error CodeDTS_E_THREADFAILED.线程"WorkThread0"已退出,错误代码为0xC0047039.在此之前可能会发布错误消息,其中包含有关线程退出原因的更多信息.(SQL Server导入和导出向导)
Run Code Online (Sandbox Code Playgroud)- Post-execute (Success) Messages * Information 0x402090df: Data Flow Task: The final commit for the数据插入已经开始.(SQL Server导入和导出向导)
Run Code Online (Sandbox Code Playgroud)* Information 0x402090e0: Data Flow Task: The final commit for the数据插入已经结束.(SQL Server导入和导出向导)
Run Code Online (Sandbox Code Playgroud)- Cleanup (Success) Messages * Information 0x4004300b: Data Flow Task: "component "Destination -Sheet0 $"(323)"写了210行.(SQL Server导入和导出向导)
Fra*_*ang 15
当我遇到截断错误时,我插入8个虚拟行.每个单元格都有长度> 256的垃圾文本.这会强制检测到的数据类型为varchar(max)而不是varchar(256).如果一行是数字列,我必须用数字填充(例如,0),如果是日期,我必须填写一个虚拟日期,否则列将导入空数据.
然后我在导入后删除这些垃圾行.
向导使用较小的值作为Excel数据的标准varchar大小,而不是SQL Server 2000中的向导.因此,它通常会截断您尝试快速导入到临时表的数据.但是,当您执行向导时,一个屏幕将询问您是否要编辑映射,并且可以在那里修复字段的大小.或者你可以首先使用create table stament来创建一个你想要的大小的工作表(nvarchar(max)如果你是第一次查看数据并且不知道字段有多大就是好的)然后导入进去.使用Excel,我知道我也遇到了SQl Server的问题,只使用几行来确定数据类型然后插入失败的记录(比如partnumber之类的东西),因为它认为基于前几个记录它是一个整数时它实际上是一种字符串类型的数据.您也可能遇到这样的问题,因此即使您没有出现截断错误,最好还是查看映射.