有关excel表导入sql server 2005 的亲身经历
2008-10-22 16:56
453 查看
说明:
一、我装的sql没有导入/导出工具,所以只能用代码来操作;
二、我装的是sqlserver2005开发者版;
三、excel文件名为“行业汇总表.xls”表名为“汇总表1”,存放在桌面上。数据库名为“stone”,表名为“hy_all”。
成功经验:
一、在目标表上点右键“编写表脚本为”→“insert”→“新查询编辑器窗口”;
二、删除已有的代码,并将下面的代码帖进去:
SET IDENTITY_INSERT [stone].[dbo].[hy_all] ON
INSERT INTO [stone].[dbo].[hy_all](id,hy_code,code,[name],data)
SELECT id,hy_code,code,[name],data
FROM
OPENROWSET('MICROSOFT.JET.OLEDB.4.0','Excel 5.0;HDR=YES;DATABASE=C:/Documents and Settings/Administrator/桌面/行业汇总表.xls',汇总表1$ )
解释一下:第一行的目的是把表设置为可写入状态;
其他行是插入读取的数据;
这里数据库和excel表的字段名是一致的,实际中可以不一致,但必须是一一对应。
三、将对应的数据库、表、excel文件及表更新后,点“!执行”即可实现导入数据。
可能的错误及解决办法:
一、要将目标excel表关闭,否则无法实现导入操作;
二、id必须是自动增加的,即目的表中必须至少有一个标识字段(我设置的是自动增加1),否则第一行执行打开会出错;
三、尽管id设置了自动增加,仍然需要有数据导入,我的做法是在原excel表中将id用脱放的方式拉出来。
补充内容:
在Sql Server中查询一下Excel文件的时候出现问题:
SELECT * FROM OPENROWSET( 'MICROSOFT.JET.OLEDB.4.0','Excel 8.0;IMEX=1;HDR=YES;DATABASE=D:/a.xls',[sheet1$])
结果提示:
SQL Server 阻止了对组件 'Ad Hoc Distributed Queries' 的 STATEMENT'OpenRowset/OpenDatasource' 的访问,因为此组件已作为此服务器安全配置的一部分而被关闭。系统管理员可以通过使用 sp_configure 启用 'Ad Hoc Distributed Queries'。有关启用 'Ad Hoc Distributed Queries' 的详细信息,请参阅 SQL Server 联机丛书中的 "外围应用配置器"。
查询相关资料,找到解决方法:
启用Ad Hoc Distributed Queries:
exec sp_configure 'show advanced options',1
reconfigure
exec sp_configure 'Ad Hoc Distributed Queries',1
reconfigure
使用完成后,关闭Ad Hoc Distributed Queries:
exec sp_configure 'Ad Hoc Distributed Queries',0
reconfigure
exec sp_configure 'show advanced options',0
reconfigure
一、我装的sql没有导入/导出工具,所以只能用代码来操作;
二、我装的是sqlserver2005开发者版;
三、excel文件名为“行业汇总表.xls”表名为“汇总表1”,存放在桌面上。数据库名为“stone”,表名为“hy_all”。
成功经验:
一、在目标表上点右键“编写表脚本为”→“insert”→“新查询编辑器窗口”;
二、删除已有的代码,并将下面的代码帖进去:
SET IDENTITY_INSERT [stone].[dbo].[hy_all] ON
INSERT INTO [stone].[dbo].[hy_all](id,hy_code,code,[name],data)
SELECT id,hy_code,code,[name],data
FROM
OPENROWSET('MICROSOFT.JET.OLEDB.4.0','Excel 5.0;HDR=YES;DATABASE=C:/Documents and Settings/Administrator/桌面/行业汇总表.xls',汇总表1$ )
解释一下:第一行的目的是把表设置为可写入状态;
其他行是插入读取的数据;
这里数据库和excel表的字段名是一致的,实际中可以不一致,但必须是一一对应。
三、将对应的数据库、表、excel文件及表更新后,点“!执行”即可实现导入数据。
可能的错误及解决办法:
一、要将目标excel表关闭,否则无法实现导入操作;
二、id必须是自动增加的,即目的表中必须至少有一个标识字段(我设置的是自动增加1),否则第一行执行打开会出错;
三、尽管id设置了自动增加,仍然需要有数据导入,我的做法是在原excel表中将id用脱放的方式拉出来。
补充内容:
在Sql Server中查询一下Excel文件的时候出现问题:
SELECT * FROM OPENROWSET( 'MICROSOFT.JET.OLEDB.4.0','Excel 8.0;IMEX=1;HDR=YES;DATABASE=D:/a.xls',[sheet1$])
结果提示:
SQL Server 阻止了对组件 'Ad Hoc Distributed Queries' 的 STATEMENT'OpenRowset/OpenDatasource' 的访问,因为此组件已作为此服务器安全配置的一部分而被关闭。系统管理员可以通过使用 sp_configure 启用 'Ad Hoc Distributed Queries'。有关启用 'Ad Hoc Distributed Queries' 的详细信息,请参阅 SQL Server 联机丛书中的 "外围应用配置器"。
查询相关资料,找到解决方法:
启用Ad Hoc Distributed Queries:
exec sp_configure 'show advanced options',1
reconfigure
exec sp_configure 'Ad Hoc Distributed Queries',1
reconfigure
使用完成后,关闭Ad Hoc Distributed Queries:
exec sp_configure 'Ad Hoc Distributed Queries',0
reconfigure
exec sp_configure 'show advanced options',0
reconfigure
相关文章推荐
- excel数据导入导出SQL Server 2005
- 从SQL Server 2005 中 导入 导出 excel 表格
- 将Excel 数据导入到Sql Server 2005
- Excel 2007导入数据到SQL Server 2005
- Excel数据导入到Sql Server 2005
- 使用XML向SQL Server 2005批量写入数据——一次有关XML时间格式的折腾经历
- Excel导入sql server 2005 错误 0xc00470fe 数据流任务 产品级别对于 组件 源 - Sheet1$ (1) 而言不足
- 将Excel表导入到SQL Server 2005 的DB
- 使用XML向SQL Server 2005批量写入数据——一次有关XML时间格式的折腾经历
- SSIS将excel文件批量导入到sql server 2005
- SSIS将excel文件批量导入到sql server 2005
- 将Excel文件.xls导入SQL Server 2005
- 使用XML向SQL Server 2005批量写入数据——一次有关XML时间格式的折腾经历
- 解决Sql Server 2005导入Excel错误消息
- excel导入数据到SQL server 2005
- 解决Sql Server 2005导入Excel错误消息
- [Database] SqlServer: Excel导入sql server 2005 错误 0xc00470fe 数据流任务 产品级别对于 组件 源 - Sheet1$ (1) 而言不足
- 导入Excel到Sql Server 2005 (转)
- 使用XML向SQL Server 2005批量写入数据——一次有关XML时间格式的折腾经历
- SQL Server 2005 中导入Excel文件出错的解决方法