数据库版本:SQL Server 2008
操作系统:windows 7
Office 版本:2011
问题具体描述:1.在SQL Server 2008中,新建了一个 wsgj 数据库。并且在 wsgj 数据库中存放了40个表(字段统一)。
2.这40个表的字段都一样:乡、村、小地名、面积、负责人、联系电话
3.请问:如何把这40个表“一键(F5)”分别导出为Excel?
- SQL code
--如果从SQL数据库中,导出数据到Excel,如果Excel文件已经存在,而且已经按照要接收的数据创建好表头,就可以简单的用:insert into OPENROWSET('MICROSOFT.JET.OLEDB.4.0','Excel 5.0;HDR=YES;DATABASE=c:\表1.xls',sheet1$)select * from 表1
注:上面的语句能成功将数据库中的“表1”导出到C盘下的“表1.xls”。这样每次导一个表,都要替换两次表名(表1)才能导出。那我这40个表不是要替换80次表名才能全部导出!!!
下面是我尝试写过的循环语句,但仍然没有解决问题。由于接触数据库知识不长,很多东西一知半解。望大家帮我看看,并提出解决问题的放案。谢谢
- SQL code
use wsgjgodeclare @table_name varchar(50) --创建一个变量用来存储表名declare cur cursor for select name from sysobjects where xtype='U' --创建游标并搜索所有表名open cur fetch next from cur into @table_name --循环体while @@fetch_status=0 begin EXEC ('insert into OPENROWSET("MICROSOFT.JET.OLEDB.4.0","Excel 5.0;HDR=YES;DATABASE=C:\[' + @table_name + '].xls",sheet1$) select * from [email protected]_name) fetch next from cur into @table_name end close cur deallocate cur
===================================
运行上面代码后的错误:
消息 102,级别 15,状态 1,第 1 行
'MICROSOFT.JET.OLEDB.4.0' 附近有语法错误。
对不起啊,供大家测试的原数据上传不了。
------解决方案--------------------
里的双引号改成两个单引号
- SQL code
EXEC ('insert into OPENROWSET(''MICROSOFT.JET.OLEDB.4.0'' ,''Excel 5.0;HDR=YES;DATABASE=C:\test\' + @table_name + '.xls'',sheet1$) select * from [email protected]_name)