首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

请教:怎么从SQL 2008数据库中“一键(F5)”分别导出多个Excel表

2012-03-28 
请问:如何从SQL 2008数据库中“一键(F5)”分别导出多个Excel表?数据库版本:SQL Server 2008操作系统:windows

请问:如何从SQL 2008数据库中“一键(F5)”分别导出多个Excel表?
数据库版本: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 '+@table_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 '+@table_name) 

热点排行