从中导入/导出的基本方法

来源:互联网 发布:自己如何制作软件 编辑:程序博客网 时间:2024/05/22 08:18
<script type="text/javascript"><!--google_ad_client = "pub-2947489232296736";/* 728x15, 创建于 08-4-23MSDN */google_ad_slot = "3624277373";google_ad_width = 728;google_ad_height = 15;//--></script><script type="text/javascript"src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
<script type="text/javascript"><!--google_ad_client = "pub-2947489232296736";/* 160x600, 创建于 08-4-23MSDN */google_ad_slot = "4367022601";google_ad_width = 160;google_ad_height = 600;//--></script><script type="text/javascript"src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>

从SQLServer中导入/导出Excel的基本方法


/*=================== 导入/导出Excel的基本方法===================*/

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

/*===================================================================*/
--如果接受数据导入的表已经存在
insertinto表select*from
OPENROWSET('MICROSOFT.JET.OLEDB.4.0'
,'Excel5.0;HDR=YES;DATABASE=c:test.xls',sheet1$)

--如果导入数据并生成表
select*into表from
OPENROWSET('MICROSOFT.JET.OLEDB.4.0'
,'Excel5.0;HDR=YES;DATABASE=c:test.xls',sheet1$)


/*===================================================================*/
--如果从SQL数据库中,导出数据到Excel,如果Excel文件已经存在,而且已经按照要接收的数据创建好表头,就可以简单的用:
insertintoOPENROWSET('MICROSOFT.JET.OLEDB.4.0'
,'Excel5.0;HDR=YES;DATABASE=c:test.xls',sheet1$)
select*from表


--如果Excel文件不存在,也可以用BCP来导成类Excel的文件,注意大小写:
--导出表的情况
EXECmaster..xp_cmdshell'bcp数据库名.dbo.表名out"c:test.xls"/c-/S"服务器名"/U"用户名"-P"密码"'

--导出查询的情况
EXECmaster..xp_cmdshell'bcp"SELECTau_fname,au_lnameFROMpubs..authorsORDERBYau_lname"queryout"c:test.xls"/c-/S"服务器名"/U"用户名"-P"密码"'


/*--说明:
c:test.xls 为导入/导出的Excel文件名.
sheet1$     为Excel文件的工作表名,一般要加上$才能正常使用.
--*/
--上面已经说过,用BCP导出的是类Excel文件,其实质为文本文件,

--要导出真正的Excel文件.就用下面的方法


/*--数据导出EXCEL
 
 导出表中的数据到Excel,包含字段名,文件为真正的Excel文件
 ,如果文件不存在,将自动创建文件
 ,如果表不存在,将自动创建表
 基于通用性考虑,仅支持导出标准数据类型
--邹建2003.10--*/

/*--调用示例

 p_exporttb@tbname='地区资料',@path='c:',@fname='aa.xls'
--*/
ifexists(select*fromdbo.sysobjectswhereid=object_id(N'[dbo].[p_exporttb]')andOBJECTPROPERTY(id,N'IsProcedure')=1)
dropprocedure[dbo].[p_exporttb]
GO

createprocp_exporttb
@tbnamesysname,   --要导出的表名
@pathnvarchar(1000),  --文件存放目录
@fnamenvarchar(250)='' --文件名,默认为表名
as
declare@errint,@srcnvarchar(255),@descnvarchar(255),@outint
declare@objint,@constrnvarchar(1000),@sqlvarchar(8000),@fdlistvarchar(8000)

--参数检测
ifisnull(@fname,'')=''set@fname=@tbname+'.xls'

--检查文件是否已经存在
ifright(@path,1)<>''set@path=@path+''
createtable#tb(abit,bbit,cbit)
set@sql=@path+@fname
insertinto#tbexecmaster..xp_fileexist@sql

--数据库创建语句
set@sql=@path+@fname
ifexists(select1from#tbwherea=1)
 set@constr='DRIVER={MicrosoftExcelDriver(*.xls)};DSN='''';READONLY=FALSE'
      +';CREATE_DB="   +';DATABASE='+@sql+'"'


--连接数据库
exec@err=sp_oacreate'adodb.connection',@objout
if@err<>0gotolberr

exec@err=sp_oamethod@obj,'open',null,@constr
if@err<>0gotolberr

/*--如果覆盖已经存在的表,就加上下面的语句
--创建之前先删除表/如果存在的话
select@sql='droptable['+@tbname+']'
exec@err=sp_oamethod@obj,'execute',@outout,@sql
--*/

--创建表的SQL
select@sql='',@fdlist=''1<script type="text/javascript"><!--google_ad_client = "pub-2947489232296736";/* 728x15, 创建于 08-4-23MSDN */google_ad_slot = "3624277373";google_ad_width = 728;google_ad_height = 15;//--></script><script type="text/javascript"src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
<script type="text/javascript"><!--google_ad_client = "pub-2947489232296736";/* 160x600, 创建于 08-4-23MSDN */google_ad_slot = "4367022601";google_ad_width = 160;google_ad_height = 600;//--></script><script type="text/javascript"src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
原创粉丝点击