SQL导出到Excel的语句

  • 格式:doc
  • 大小:41.00 KB
  • 文档页数:3

下载文档原格式

  / 7
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

SQL导出到Excel的语句

从Excel文件中,导入数据到SQL数据库中,很简单,直接用下面的语句: /*============================================================= ======*/

--如果接受数据导入的表已经存在

insert into表select*from

OPENROWSET('MICROSOFT.JET.OLEDB.4.0'

,'Excel 5.0;HDR=YES;DATABASE=c:\test.xls',sheet1$)

--如果导入数据并生成表

select*into表from

OPENROWSET('MICROSOFT.JET.OLEDB.4.0'

,'Excel 5.0;HDR=YES;DATABASE=c:\test.xls',sheet1$)

/*============================================================= ======*/

--如果从SQL数据库中,导出数据到Excel,如果Excel文件已经存在,而且已经按照要接收的数据创建好表头,就可以简单的用:

insert into OPENROWSET('MICROSOFT.JET.OLEDB.4.0'

,'Excel 5.0;HDR=YES;DATABASE=c:\test.xls',sheet1$)

select*from表

--如果Excel文件不存在,也可以用BCP来导成类Excel的文件,注意大小写:

--导出表的情况

EXEC master..xp_cmdshell 'bcp 数据库名.dbo.表名 out

"c:\test.xls" /c -/S"服务器名" /U"用户名" -P"密码"'

--导出查询的情况

EXEC master..xp_cmdshell 'bcp "SELECT au_fname, au_lname FROM pubs..authors ORDER BY au_lname" queryout "c:\test.xls" /c -/S"服务器名" /U"用户名" -P"密码"'

说明.

c:\test.xls 为导入/导出的Excel文件名.

sheet1$ 为Excel文件的工作表名,一般要加上$才能正常使用. 下面是导出真正Excel文件的方法:

/*--数据导出EXCEL

导出表中的数据到Excel,包含字段名,文件为真正的Excel文件

,如果文件不存在,将自动创建文件

,如果表不存在,将自动创建表

基于通用性考虑,仅支持导出标准数据类型

---*/

/*--调用示例

p_exporttb @tbname='地区资料',@path='c:\',@fname='aa.xls'

--*/

if exists (select*from dbo.sysobjects where id =

object_id(N'[dbo].[p_exporttb]') and OBJECTPROPERTY(id,

N'IsProcedure') =1)

drop procedure[dbo].[p_exporttb]

GO

create proc p_exporttb

@tbname sysname, --要导出的表名,注意只能是表名/视图名

@path nvarchar(1000), --文件存放目录

@fname nvarchar(250)=''--文件名,默认为表名

as

declare@err int,@src nvarchar(255),@desc nvarchar(255),@out int declare@obj int,@constr nvarchar(1000),@sql

varchar(8000),@fdlist varchar(8000)

--参数检测

if isnull(@fname,'')=''set@fname=@tbname+'.xls'

--检查文件是否已经存在

if right(@path,1)<>'\'set@path=@path+'\'

create table #tb(a bit,b bit,c bit)

set@sql=@path+@fname

insert into #tb exec master..xp_fileexist @sql

--数据库创建语句

set@sql=@path+@fname

if exists(select1from #tb where a=1)

set@constr='DRIVER={Microsoft Excel Driver

(*.xls)};DSN='''';READONLY=FALSE'+';CREATE_DB="'+@sql+'";DBQ='+ @sql

else

set@constr='Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties="Excel 5.0;HDR=YES'+';DATABASE='+@sql+'"'

--连接数据库

exec@err=sp_oacreate 'adodb.connection',@obj out

if@err<>0goto lberr

exec@err=sp_oamethod @obj,'open',null,@constr

if@err<>0goto lberr

--创建表的SQL

select@sql='',@fdlist=''

select@fdlist=@fdlist+','+,@sql=@sql+',['++']

'+case when in('char','nchar','varchar','nvarchar') then 'text('+cast(case when a.length>255then255else a.length end as varchar)+')'

when in('tynyint','int','bigint','tinyint') then'int' when in('smalldatetime','datetime') then'datetime' when in('money','smallmoney') then'money'

else end