




已阅读5页,还剩2页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
SQL 导入导出Excel数据的语句从Excel文件中,导入数据到SQL数据库中,很简单-从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文件的方法: if exists (select * from dbo.sysobjects where id = object_id(Ndbo.p_exporttb) and OBJECTPROPERTY(id, NIsProcedure) = 1) drop procedure dbo.p_exporttb GO /*-数据导出EXCEL 导出表中的数据到Excel,包含字段名,文件为真正的Excel文件 ,如果文件不存在,将自动创建文件 ,如果表不存在,将自动创建表 基于通用性考虑,仅支持导出标准数据类型 -邹建 2003.10(引用请保留此信息)-*/ /*-调用示例 p_exporttb tbname=地区资料,path=c:,fname=aa.xls -*/ 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(select 1 from #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 8.0;HDR=YES +;DATABASE=+sql+ -连接数据库 exec err=sp_oacreate adodb.connection,obj out if err0 goto lberr exec err=sp_oamethod obj,open,null,constr if err0 goto lberr /*-如果覆盖已经存在的表,就加上下面的语句 -创建之前先删除表/如果存在的话 select sql=drop table +tbname+ exec err=sp_oamethod obj,execute,out out,sql -*/ -创建表的SQL select sql=,fdlist= select fdlist=fdlist+,++ ,sql=sql+,++ +case when like %char then case when a.length255 then memo else text(+cast(a.length as varchar)+) end when like %int or =bit then int when like %datetime then datetime when like %money then money when like %text then memo else end FROM syscolumns a left join systypes b on a.xtype=b.xusertype where not in(image,uniqueidentifier,sql_variant,varbinary,binary,timestamp) and object_id(tbname)=id select sql=create table +tbname +(+substring(sql,2,8000)+) ,fdlist=substring(fdlist,2,8000) exec err=sp_oamethod obj,execute,out out,sql if err0 goto lberr exec err=sp_oadestroy obj -导入数据 set sql=openrowset(MICROSOFT.JET.OLEDB.4.0,Excel 8.0;HDR=YES;IMEX=1 ;DATABASE=+path+fname+,+tbname+$) exec(insert into +sql+(+fdlist+) select +fdlist+ from +tbname) return lberr: exec sp_oageterrorinfo 0,src out,desc out lbexit: select cast(err as varbinary(4) as 错误号 ,src as 错误源,desc as 错误描述 select sql,constr,fdlist go if exists (select * from dbo.sysobjects where id = object_id(Ndbo.p_exporttb) and OBJECTPROPERTY(id, NIsProcedure) = 1) drop procedure dbo.p_exporttb GO /*-数据导出EXCEL 导出查询中的数据到Excel,包含字段名,文件为真正的Excel文件 如果文件不存在,将自动创建文件 如果表不存在,将自动创建表 基于通用性考虑,仅支持导出标准数据类型 -邹建 2003.10(引用请保留此信息)-*/ /*-调用示例 p_exporttb sqlstr=select * from 地区资料 ,path=c:,fname=aa.xls,sheetname=地区资料 -*/ create proc p_exporttb sqlstr varchar(8000), -查询语句,如果查询语句中使用了order by ,请加上top 100 percent path nvarchar(1000), -文件存放目录 fname nvarchar(250), -文件名 sheetname varchar(250)= -要创建的工作表名,默认为文件名 as declare err int,src nvarchar(255),desc nvarchar(255),out intdeclare obj int,constr nvarchar(1000),sql varchar(8000),fdlist varchar(8000) -参数检测 if isnull(fname,)= set fname=temp.xls if isnull(sheetname,)= set sheetname=replace(fname,.,#) -检查文件是否已经存在 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(select 1 from #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 8.0;HDR=YES +;DATABASE=+sql+ -连接数据库 exec err=sp_oacreate adodb.connection,obj out if err0 goto lberr exec err=sp_oamethod obj,open,null,constr if err0 goto lberr -创建表的SQL declare tbname sysname set tbname=#tmp_+convert(varchar(38),newid() set sql=select * into +tbname+ from(+sqlstr+) a exec(sql) select sql=,fdlist= select fdlist=fdlist+,++ ,sql=sql+,++ +case when like %char then case when a.length255 then memo else text(+cast(a.length as varchar)+) end when like %int or =bit then int when like %datetime then datetime when like %money then money when like %text then memo else end FROM tempdb.syscolumns a left join tempdb.systypes b on a.xtype=b.xusertype where not in(image,uniqueidentifier,sql_variant,varbinary,binary,timestamp) and a.id=(select id from tempdb.sysobjects where name=tbname) if rowcount=0 return select sql=create table +sheetname +(+substring(sql,2,8000)+) ,fdlist=substring(fdlist,2,8000) exec err=sp_oamethod obj,execute,out out,sql if err0 goto lberr exec err=sp_oadestroy obj -导入数据 set sql=openrowset(MICROSOFT.JET.OLEDB.4.0,Excel 8.0;HDR=YES ;DATABASE=+path+fname+,+sheetname+$) exec(insert into +sql+(+fdlist+) select +fdlist+ from +tbname+) set sql=drop table +tbname+ exec(sql) return lberr: exec sp_oageterrorinfo 0,src out,desc out lbexit: select cast(err as varbinary(4) as 错误号 ,src as 错误源,desc as 错误描述 select sql,constr,fdlist go declare tbname sysname-要导出的表名,注意只能是表名/视图名 declare path nvarchar(1000)-文件存放目录 declare fname nvarchar(250)-文件名,默认为表名 set tbname=salaryreports set path=e: set fname=salaryreportsxls 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 -drop table #tb -检查文件是否已经存在 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 -select * from #tb -数据库创建语句 set sql=path+fname if exists(select 1 from #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 err0 goto lberr exec err=sp_oamethod obj,open,null,constr if err0 goto lberr -创建表的SQL select sql=,fdlist= select fdlist=fdlist+,+ ,sql=sql+,++ +case when in(char,nchar,varchar,nvarchar) then text(+cast(case when a.length255 then 255 else a.length end as varchar)+) when in(tynyint,int,bigint,tinyint) then int when
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 马克思主义劳动观课件
- 香酥鸡蛋卷培训课件图
- 香港回归政治课件
- 2025年精神科护理学患者心理疏导操作规范考核试卷答案及解析
- 全屋定制合同转让协议书
- 2025年风湿病学理论知识考试答案及解析
- 香油工厂消防知识培训总结课件
- 房屋托管合同免责协议书
- 房租合同解除与终止协议
- 托管跟谁签房租协议合同
- GB/T 31989-2015高压电力用户用电安全
- GB/T 24338.6-2018轨道交通电磁兼容第5部分:地面供电设备和系统的发射与抗扰度
- 幼儿园中层干部培训心得体会
- 燃料电池课件
- 学校学生评教表
- 《风力机理论与设计》全套教学课件
- 1999年版干部履历表
- 丽声北极星自然拼读绘本第六级 The Clever Beaver 课件
- 1-AMS2628A-2013-中文版
- 食品安全“五常法”管理制度
- PEP小学英语五年级上册全册教案表格式
评论
0/150
提交评论