下面演示用sql语句从excel表导入数据到sql server数据表,以及从sql server导出数据到excel表。
导入excel
——————————————————————–
exec sp_configure ‘show advanced options’,1
reconfigure
exec sp_configure ‘Ad Hoc Distributed Queries’,1
reconfigure
–创建数据表并导入数据
SELECT * INTO test FROM OPENROWSET(‘Microsoft.ACE.OLEDB.12.0’,
‘Excel 8.0;Database=E:\test.xlsx’, [Sheet1$])
–导入数据到已有的数据表
insert into test
SELECT * FROM OPENDATASOURCE(‘Microsoft.Ace.OleDb.12.0’, ‘Extended Properties=”Excel 12.0;HDR=YES;IMEX=1″;
Data Source=”E:\test.xlsx”‘ )…[sheet1$]
exec sp_configure ‘Ad Hoc Distributed Queries’,0
reconfigure
exec sp_configure ‘show advanced options’,0
reconfigure
——————————————————————–
导出excel
——————————————————————–
exec sp_configure ‘show advanced options’,1
reconfigure
exec sp_configure ‘xp_cmdshell’,1
reconfigure
–导出整张表
–EXEC master..xp_cmdshell ‘bcp “数据库.dbo.表名” out E:\Temp.xlsx -c -q -S”服务器名” -U”用户” -P”密码” ‘
EXEC master..xp_cmdshell ‘bcp “check.dbo.test” out E:\Temp.xlsx -c -q -S”hostname” -U”sa” -P”123456″ ‘
–根据Query语句导出
EXEC master..xp_cmdshell ‘bcp “select * from [check].dbo.test” queryout E:\Temp.xlsx -c -q -S”hostname” -U”sa” -P”123456″‘
exec sp_configure ‘xp_cmdshell’,0
reconfigure
exec sp_configure ‘show advanced options’,0
reconfigure
——————————————————————–
遇到问题解决
1、提示未在本地计算机注册“Microsoft.ACE.OLEDB.12.0”
解决:下载安装AccessDatabaseEngine,注意版本和64、32位区别。
下载链接(2010):
https://www.microsoft.com/zh-cn/download/confirmation.aspx?id=13255
2、提示SQL Server 阻止了对组件 ‘Ad Hoc Distributed Queries’ 的 STATEMENT’OpenRowset/OpenDatasource’ 的访问,因为此组件已作为此服务器安全配置的一部分而被关闭。系统管理员可以通过使用 sp_configure 启用 ‘Ad Hoc Distributed Queries’。
解决:开启’Ad Hoc Distributed Queries’,使用后关闭
开启:
exec sp_configure ‘show advanced options’,1
reconfigure
exec sp_configure ‘Ad Hoc Distributed Queries’,1
reconfigure
关闭:
exec sp_configure ‘Ad Hoc Distributed Queries’,0
reconfigure
exec sp_configure ‘show advanced options’,0
reconfigure