将EXCEL表中的数据导入到SQL Server 2005中

时间:2021-11-02 00:53:12
各位大虾,江湖救急啊!大家来帮我看看什么问题把。
今天在将EXCEL表中的数据导入到SQL Server 2005中遇到了以下问题。
希望各位大哥大姐帮我看看。


操作已停止...

- 正在初始化数据流任务 (成功)

- 正在初始化连接 (成功)

- 正在设置 SQL 命令 (成功)

- 正在设置源连接 (成功)

- 正在设置目标连接 (成功)

- 正在验证 (警告)
消息
* 警告 0x802092a7: 数据流任务: 由于将数据流中长度为 255 的列“scene_name”中的数据插入数据库中长度为 30 的列“scene_name”,可能导致截断。
 (SQL Server 导入和导出向导)

* 警告 0x802092a7: 数据流任务: 由于将数据流中长度为 255 的列“scene_type”中的数据插入数据库中长度为 20 的列“scene_type”,可能导致截断。
 (SQL Server 导入和导出向导)

* 警告 0x802092a7: 数据流任务: 由于将数据流中长度为 255 的列“scene_board”中的数据插入数据库中长度为 20 的列“scene_board”,可能导致截断。
 (SQL Server 导入和导出向导)

* 警告 0x802092a7: 数据流任务: 由于将数据流中长度为 255 的列“district_province”中的数据插入数据库中长度为 6 的列“district_province”,可能导致截断。
 (SQL Server 导入和导出向导)

* 警告 0x802092a7: 数据流任务: 由于将数据流中长度为 255 的列“dstrict_county”中的数据插入数据库中长度为 22 的列“dstrict_county”,可能导致截断。
 (SQL Server 导入和导出向导)

* 警告 0x802092a7: 数据流任务: 由于将数据流中长度为 255 的列“scene_addr”中的数据插入数据库中长度为 50 的列“scene_addr”,可能导致截断。
 (SQL Server 导入和导出向导)

* 警告 0x802092a7: 数据流任务: 由于将数据流中长度为 255 的列“scene_key”中的数据插入数据库中长度为 80 的列“scene_key”,可能导致截断。
 (SQL Server 导入和导出向导)

* 警告 0x80047076: 数据流任务: 数据流任务中后来没有用过输出“Excel 源输出”(9)和组件“源 - Sheet1$”(1)的输出列“scene_build_flag ”(57)。删除此不用的输出列可以提高数据流任务的性能。
 (SQL Server 导入和导出向导)

* 警告 0x802092a7: 数据流任务: 由于将数据流中长度为 255 的列“scene_name”中的数据插入数据库中长度为 30 的列“scene_name”,可能导致截断。
 (SQL Server 导入和导出向导)

* 警告 0x802092a7: 数据流任务: 由于将数据流中长度为 255 的列“scene_type”中的数据插入数据库中长度为 20 的列“scene_type”,可能导致截断。
 (SQL Server 导入和导出向导)

* 警告 0x802092a7: 数据流任务: 由于将数据流中长度为 255 的列“scene_board”中的数据插入数据库中长度为 20 的列“scene_board”,可能导致截断。
 (SQL Server 导入和导出向导)

* 警告 0x802092a7: 数据流任务: 由于将数据流中长度为 255 的列“district_province”中的数据插入数据库中长度为 6 的列“district_province”,可能导致截断。
 (SQL Server 导入和导出向导)

* 警告 0x802092a7: 数据流任务: 由于将数据流中长度为 255 的列“dstrict_county”中的数据插入数据库中长度为 22 的列“dstrict_county”,可能导致截断。
 (SQL Server 导入和导出向导)

* 警告 0x802092a7: 数据流任务: 由于将数据流中长度为 255 的列“scene_addr”中的数据插入数据库中长度为 50 的列“scene_addr”,可能导致截断。
 (SQL Server 导入和导出向导)

* 警告 0x802092a7: 数据流任务: 由于将数据流中长度为 255 的列“scene_key”中的数据插入数据库中长度为 80 的列“scene_key”,可能导致截断。
 (SQL Server 导入和导出向导)

* 警告 0x80047076: 数据流任务: 数据流任务中后来没有用过输出“Excel 源输出”(9)和组件“源 - Sheet1$”(1)的输出列“scene_build_flag ”(57)。删除此不用的输出列可以提高数据流任务的性能。
 (SQL Server 导入和导出向导)


- 准备执行 (成功)

- 执行之前 (成功)

- 正在执行 (错误)
消息
* 错误 0xc02020c5: 数据流任务: 在将列“district_number”(33)转换为列“district_number”(107)时数据转换失败。转换操作返回状态值 4 和状态文本“文本被截断,或者一个或多个字符在目标代码页中没有匹配项。”。
 (SQL Server 导入和导出向导)

* 错误 0xc020902a: 数据流任务: “输出列“district_number”(107)”由于发生截断而失败,而且针对“输出列“district_number”(107)”的截断行处理设置指定截断时出错。在指定组件的指定对象上出现截断错误。
 (SQL Server 导入和导出向导)

* 错误 0xc0047022: 数据流任务: SSIS 错误代码 DTS_E_PROCESSINPUTFAILED。组件“数据转换 1”(95)的 ProcessInput 方法失败,错误代码为 0xC020902A。标识的这个组件从 ProcessInput 方法返回了一个错误。虽然该错误是此组件特有的,但却是致命的,将导致数据流任务停止运行。可能在此之前已经发出错误消息,提供了有关失败的详细信息。
 (SQL Server 导入和导出向导)

* 错误 0xc0047021: 数据流任务: SSIS 错误代码 DTS_E_THREADFAILED。 线程“WorkThread0”已退出,错误代码为 0xC020902A。可能在此之前已经发出错误消息,提供了有关线程退出原因的详细信息。
 (SQL Server 导入和导出向导)


- 正在复制到 [QValleyTravel_db].[dbo].[scene_info_table] (已停止)

- 执行之后 (成功)
消息
* 信息 0x402090df: 数据流任务: 数据插入操作的最终提交已开始。
 (SQL Server 导入和导出向导)

* 信息 0x402090e0: 数据流任务: 数据插入操作的最终提交已结束。
 (SQL Server 导入和导出向导)


- 清除 (成功)
消息
* 信息 0x4004300b: 数据流任务: “组件“目标 - scene_info_table”(62)”已写入 0 行。
 (SQL Server 导入和导出向导)




10 个解决方案

#1


你插入的数据长度与你插入到表里对应列的长度不匹配 小于对应列的长度

#2


把表里对应列的长度改大点就可以了

#3


以前我也遇到过这样的现象,但有些相同的现象,其原因却不同,可能是微软定的很多很细的东西,开发的人偷懒没把东西做细吧,呵,言归正传。

你可以试着更改一下SQL的服务

打开sql server configuration Manager(SQL SERVER 配置管理器)
把SSIS(SQL SERVER Integration Service)的运行身份改成"LocalSystem"(本地)
然后重启一下服务就可以导数据了,非常郁闷。

有些系统是以"Network Service"运行的,也能正常导入数据

只供参考,不行不收费,呵

#4


在导入前转换一下列的长度 cast(col as nvarchar(20))--在SSIS里可设置方法与2000DTS没有什么区别

#5


不设置的情况下,Excel的长度全为256
或在查询分析器的插入:
insert T(col...)
select cast(COL as nvarchar(20))......--
FROM openrowset( 'Microsoft.Jet.OLEDB.4.0',
'EXCEL 8.0;HDR=YES;IMEX=1; DATABASE=e:\test.xls',Sheet1$)

#6


对,用查询分析器

#7


多谢各位的指点,问题已经解决。确实是插入的数据长度与插入到表里对应列的长度不匹配的问题。  

#8


能请问下 你最后是咋解决的么? , 我现在碰到同样的问题了, 但是我不知道这个查询咋写啊?

#9


Excel的长度全为256,看看你要导出的表字段长度是不是大过256,脚本导出的话改下字段长度,如果用DTS导出的话,把EXCEL名改成中文,比如sheet1改成查询就可以了~~

#10


路过看看 学习了

#1


你插入的数据长度与你插入到表里对应列的长度不匹配 小于对应列的长度

#2


把表里对应列的长度改大点就可以了

#3


以前我也遇到过这样的现象,但有些相同的现象,其原因却不同,可能是微软定的很多很细的东西,开发的人偷懒没把东西做细吧,呵,言归正传。

你可以试着更改一下SQL的服务

打开sql server configuration Manager(SQL SERVER 配置管理器)
把SSIS(SQL SERVER Integration Service)的运行身份改成"LocalSystem"(本地)
然后重启一下服务就可以导数据了,非常郁闷。

有些系统是以"Network Service"运行的,也能正常导入数据

只供参考,不行不收费,呵

#4


在导入前转换一下列的长度 cast(col as nvarchar(20))--在SSIS里可设置方法与2000DTS没有什么区别

#5


不设置的情况下,Excel的长度全为256
或在查询分析器的插入:
insert T(col...)
select cast(COL as nvarchar(20))......--
FROM openrowset( 'Microsoft.Jet.OLEDB.4.0',
'EXCEL 8.0;HDR=YES;IMEX=1; DATABASE=e:\test.xls',Sheet1$)

#6


对,用查询分析器

#7


多谢各位的指点,问题已经解决。确实是插入的数据长度与插入到表里对应列的长度不匹配的问题。  

#8


能请问下 你最后是咋解决的么? , 我现在碰到同样的问题了, 但是我不知道这个查询咋写啊?

#9


Excel的长度全为256,看看你要导出的表字段长度是不是大过256,脚本导出的话改下字段长度,如果用DTS导出的话,把EXCEL名改成中文,比如sheet1改成查询就可以了~~

#10


路过看看 学习了