




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、SQL codeSQL SERVER 与 ACCESS EXCEL的数据转换熟悉 SQL SERVER 2000的数据库管理员都知道, 其 DTS 可以进行数据的导入导出, 其实, 我们也可以使用 Transact-SQL 语句进行导入导出操作。在 Transact-SQL 语句中,我们主 要使用 OpenDataSource 函数、 OPENROWSET 函数, 关于函数的详细说明, 请参考 SQL 联机帮助。利用下述方法,可以十分容易地实现 SQL SERVER 、 ACCESS 、 EXCEL 数据 转换,详细说明如下:一、 SQL SERVER 和 ACCESS 的数据导入导出常规的数
2、据导入导出:使用 DTS 向导迁移你的 Access 数据到 SQL Server,你可以使用这些步骤 :1在 SQL SERVER企业管理器中的 T ools (工具菜单上,选择 Data Transformation 2Services (数据转换服务 ,然后选择 czdImport Data(导入数据 。3在 Choose a Data Source(选择数据源对话框中选择 Microsoft Access as the Source, 然后键入你的 .mdb 数据库 (.mdb文件扩展名 的文件名或通过浏览寻找该文件。4在 Choose a Destination(选择目标 对话框中,
3、 选择 Microsoft OLEDB Prov ider for SQL Server ,选择数据库服务器,然后单击必要的验证方式。5在 Specify Table Copy (指定表格复制或 Query (查询对话框中,单击 Copy tables (复制表格 。6在 Select Source Tables(选择源表格对话框中,单击 Select All(全部选定 。下一步, 完成。Transact-SQL 语句进行导入导出:1. 在 SQL SERVER里查询 access 数据 :- =SELECT *FROM OpenDataSource( 'Microsoft.Jet.O
4、LEDB.4.0','Data Source="c:DB.mdb"User ID=Admin;Password='.表名-2. 将 access 导入 SQL server- =在 SQL SERVER 里运行 :SELECT *INTO newtableFROM OPENDATASOURCE ('Microsoft.Jet.OLEDB.4.0','Data Source="c:DB.mdb"User ID=Admin;Password=' .表名-3. 将 SQL SERVER表里的数据插入到 A
5、ccess 表中- =在 SQL SERVER 里运行:insert into OpenDataSource( 'Microsoft.Jet.OLEDB.4.0','Data Source=" c:DB.mdb"User ID=Admin;Password='.表名(列名 1, 列名 2select 列名 1, 列名 2 from sql表实例:insert into OPENROWSET('Microsoft.Jet.OLEDB.4.0','C:db.mdb''admin'''
6、, Testselect id,name from TestINSERT INTO OPENROWSET('Microsoft.Jet.OLEDB.4.0', 'c:trade.mdb' 'admin' '', 表名 SELECT *FROM sqltablename-二、 SQL SERVER 和 EXCEL 的数据导入导出1、在 SQL SERVER里查询 Excel 数据 :- =SELECT *FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0','Data
7、Source="c:book1.xls"User ID=Admin;Password=;Extended properties=Excel 5.0'.Sheet1$下面是个查询的示例,它通过用于 Jet 的 OLE DB 提供程序查询 Excel 电子表格。 SELECT *FROM OpenDataSource ( 'Microsoft.Jet.OLEDB.4.0','Data Source="c:Financeaccount.xls"User ID=Admin;Password=;Extended properties
8、=Excel 5.0'.xactions-2、将 Excel 的数据导入 SQL server :- =SELECT * into newtableFROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0','Data Source="c:book1.xls"User ID=Admin;Password=;Extended properties=Excel 5.0'.Sheet1$实例 :SELECT * into newtableFROM OpenDataSource( 'Microsoft
9、.Jet.OLEDB.4.0','Data Source="c:Financeaccount.xls"User ID=Admin;Password=;Extended properties=Excel 5.0'.xactions-3、将 SQL SERVER中查询到的数据导成一个 Excel 文件- =T-SQL 代码:EXEC master.xp_cmdshell 'bcp 库名 .dbo. 表名 out c:Temp.xls -c -q -S"servername"-U"sa" -P"&q
10、uot;'参数:S 是 SQL 服务器名; U 是用户; P 是密码说明:还可以导出文本文件等多种格式实例 :EXEC master.xp_cmdshell 'bcp saletesttmp.dbo.CusAccount out c:temp1.xls -c -q -S"pmserver" -U"sa" -P"sa"'EXEC master.xp_cmdshell 'bcp "SELECT au_fname, au_lname FROM pubs.authors ORDER BY au_lna
11、me" queryout C: authors.xls -c -Sservername -Usa -Ppassword' 在 VB6中应用 ADO 导出 EXCEL 文件代码:cn.open "Driver=SQL Server;Server=WEBSVR;DataBase=WebMis;UID=sa;WD=123;" cn.execute "master.xp_cmdshell 'bcp "SELECT col1, col2 FROM 库 名 .dbo. 表 名 " queryout E:DT.xls -c -Sse
12、rvername -Usa -Ppassword'"-4、在 SQL SERVER里往 Excel 插入数据 :- =insert into OpenDataSource( 'Microsoft.Jet.OLEDB.4.0','Data Source="c:Temp.xls"User ID=Admin;Password=;Extended properties=Excel 5.0'.table1 (A1,A2,A3 values (1,2,3T-SQL 代码:INSERT INTOOPENDATASOURCE('Mi
13、crosoft.JET.OLEDB.4.0','Extended Properties=Excel 8.0;Data source=C:traininginventur.xls'.Filiale1$ (bestand, produkt VALUES (20, 'Test'-总结:利用以上语句,我们可以方便地将 SQL SERVER、 ACCESS 和 EXCEL 电子表格软 件中的数据进行转换,为我们提供了极大方便!SQL2000导入 /导出 EXCEL1。从 Excel 文件中 , 导入数据到 SQL 数据库中 , 很简单 , 直接用下面的语句 :/*
14、=*/ -如果接受数据导入的表已经存在insert into 表 select * fromOPENROWSET('MICROSOFT.JET.OLEDB.4.0','Excel 5.0;HDR=YES;DATABASE=c:test.xls',sheet1$-如果导入数据并生成表select * into 表 fromOPENROWSET('MICROSOFT.JET.OLEDB.4.0','Excel 5.0;HDR=YES;DATABASE=c:test.xls',sheet1$2。 如果从 SQL 数据库中 , 导出数据到
15、 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
16、.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
17、.xls 为导入 /导出的 Excel 文件名 .sheet1$ 为 Excel 文件的工作表名 , 一般要加上 $才能正常使用 .-*/3。下面是导出真正 Excel 文件的方法 :if exists (select * from dbo.sysobjects where id = object_id(N'dbo.p_exporttb' and OBJECTPROPERTY(id, N'IsProcedure' = 1drop procedure dbo.p_exporttbGOp_exporttb tbname='地区资料 ',path=
18、39;c:',fname='aa.xls'-*/create proc p_exporttbtbname sysname, -要导出的表名path nvarchar(1000, -文件存放目录fname nvarchar(250='' -文件名 , 默认为表名asdeclare err int,src nvarchar(255,desc nvarchar(255,out intdeclare obj int,constr nvarchar(1000,sql varchar(8000,fdlist varchar(8000-参数检测if isnull(fn
19、ame,''='' set fname=tbname+'.xls'-检查文件是否已经存在if right(path,1<>'' set path=path+''create table #tb(a bit,b bit,c bitset sql=path+fnameinsert into #tb exec master.xp_fileexist sql-数据库创建语句set sql=path+fnameif exists(select 1 from #tb where a=1set constr='
20、;DRIVER=Microsoft Excel Driver (*.xls;DSN=''''READONLY=FALSE' +'CREATE_DB="'+sql+'"DBQ='+sqlelseset constr='Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties="Excel 8.0;HDR=YES' +'DATABASE='+sql+'"'-连接数据库exec err=sp_o
21、acreate 'adodb.connection',obj outif err<>0 goto lberrexec err=sp_oamethod obj,'open',null,constrif err<>0 goto lberr/*-如果覆盖已经存在的表 , 就加上下面的语句-创建之前先删除表 /如果存在的话select sql='drop table '+tbname+''exec err=sp_oamethod obj,'execute',out out,sql-*/-创建表的 S
22、QLselect sql='',fdlist=''select fdlist=fdlist+','++'',sql=sql+','++' '+casewhen like '%char'then case when a.length>255 then 'memo'else 'text('+cast(a.length as varchar+'' endwhen like '%
23、int' or ='bit' then 'int'when like '%datetime' then 'datetime'when like '%money' then 'money'when like '%text' then 'memo'else endwhere not in('image','uniqueidentifier','
24、sql_variant','varbinary','binary','timestamp'and object_id(tbname=idselect sql='create table '+tbname+'('+substring(sql,2,8000+'',fdlist=substring(fdlist,2,8000exec err=sp_oamethod obj,'execute',out out,sqlif err<>0 goto lberrexec err
25、=sp_oadestroy obj-导入数据set sql='openrowset(''MICROSOFT.JET.OLEDB.4.0'',''Excel 8.0;HDR=YES;IMEX=1;DA TABASE='+path+fname+''','+tbname+'$'exec('insert into '+sql+'('+fdlist+' select '+fdlist+' from '+tbnamereturnlb
26、err:exec sp_oageterrorinfo 0,src out,desc outlbexit:select cast(err as varbinary(4 as 错误号,src as 错误源 ,desc as 错误描述select sql,constr,fdlistgoif exists (select * from dbo.sysobjects where id = object_id(N'dbo.p_exporttb' and OBJECTPROPERTY(id, N'IsProcedure' = 1drop procedure dbo.p_exp
27、orttbGOp_exporttb sqlstr='select * from 地区资料 ',path='c:',fname='aa.xls',sheetname='地区资料 '-*/create proc p_exporttbsqlstr varchar(8000, -查询语句 , 如果查询语句中使用了 order by ,请加上 top 100 percent path nvarchar(1000, -文件存放目录fname nvarchar(250, -文件名sheetname varchar(250=''
28、-要创建的工作表名 , 默认为文件名asdeclare 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,'.
29、39;,'#'-检查文件是否已经存在if right(path,1<>'' set path=path+''create table #tb(a bit,b bit,c bitset sql=path+fnameinsert into #tb exec master.xp_fileexist sql-数据库创建语句set sql=path+fnameif exists(select 1 from #tb where a=1set constr='DRIVER=Microsoft Excel Driver (*.xls;DSN=
30、''''READONLY=FALSE'+'CREATE_DB="'+sql+'"DBQ='+sqlelseset constr='Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties="Excel 8.0;HDR=YES' +'DATABASE='+sql+'"'-连接数据库exec err=sp_oacreate 'adodb.connection',obj outi
31、f err<>0 goto lberrexec err=sp_oamethod obj,'open',null,constrif err<>0 goto lberr-创建表的 SQLdeclare tbname sysnameset tbname='#tmp_'+convert(varchar(38,newid(set sql='select * into '+tbname+' from('+sqlstr+' a'exec(sqlselect sql='',fdlist=
32、39;'select fdlist=fdlist+','++'',sql=sql+','++' '+casewhen like '%char'then case when a.length>255 then 'memo'else 'text('+cast(a.length as varchar+'' endwhen like '%int' or ='bit'
33、then 'int'when like '%datetime' then 'datetime'when like '%money' then 'money'when like '%text' then 'memo'else endFROM tempdb.syscolumns a left join tempdb.systypes b on a.xtype=b.xusertype where not in('
34、image','uniqueidentifier','sql_variant','varbinary','binary','timestamp' and a.id=(select id from tempdb.sysobjects where name=tbnameif rowcount=0 returnselect sql='create table '+sheetname+'('+substring(sql,2,8000+'',fdlist=substri
35、ng(fdlist,2,8000exec err=sp_oamethod obj,'execute',out out,sqlif err<>0 goto lberrexec err=sp_oadestroy obj-导入数据set sql='openrowset(''MICROSOFT.JET.OLEDB.4.0'',''Excel 8.0;HDR=YES;DA TABASE='+path+fname+''','+sheetname+'$'exec(
36、9;insert into '+sql+'('+fdlist+' select '+fdlist+' from '+tbname+''set sql='drop table '+tbname+''exec(sqlreturnlberr:exec sp_oageterrorinfo 0,src out,desc outlbexit:select cast(err as varbinary(4 as 错误号,src as 错误源 ,desc as 错误描述select sql,constr,fd
37、list汇总的 OPENROWSET , OpenDataSource2007-09-21 11:54SELECT * FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0','Excel 8.0;Database=C:account.xls', ' SELECT * FROM sheet1$'- 从 Excel 取数据SELECT * FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0','Excel 8.0;Database=c:account.xls'
38、,Sheet1$SELECT a.*FROM OPENROWSET('SQLOLEDB','tao''sa''','SELECT * FROM pubs.dbo.authors ORDER BY au_lname, au_fname' AS aSELECT *FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0','Data Source="c:account.xls"User ID=Admin;Password=;Extended
39、properties=Excel 8.0'.Sheet1$-ODBC 的 OLE DB 提供程序SELECT a.* FROM table1 a LEFT JOIN OPENROWSET('MSDASQL','DRIVER=SQL Server;SERVER=,2412;UID=sa;PWD=',DbName.dbo.table2 AS b ON a.id = b.id ORDER BY a.ID DESC-将地址为 端口为 2412的 SQL SERVER 上的 table2表和本地服务器上的 table1表联接。SELECT * FROM (SELECT a.* FROM table1 a UNION SELECT b.* FROM OPE
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 秋冬疾病预防指南
- 2025西安铁路职业技术学院辅导员考试试题及答案
- 2025辽宁石化职业技术学院辅导员考试试题及答案
- 2025贵州黔南经济学院辅导员考试试题及答案
- T/ZHCA 005-2019化妆品影响皮肤弹性测试方法
- 过敏性疾病的一级预防
- 亲子活动设计方案
- 2025年广东省深圳市坪山区中考历史二模试卷
- T/ZBH 026-2023晶硅光伏组件用材料第3部分:双玻光伏组件用压延玻璃弯曲强度、抗冲击性及表面应力技术规范
- 健康体检课件
- 真石漆饰面工程检验批质量验收记录
- 妇产科手术配合课件
- 地基强夯工程专项施工方案专家论证版
- (中职)中国税收:税费计算与申报项目十四 企业所得税计算与申报课件
- 心理照护教材课件汇总完整版ppt全套课件最全教学教程整本书电子教案全书教案课件合集
- 男朋友申请表
- 高中心理健康:我心换你心——心理主题:人际交往 课件(22张PPT)
- 高清元素周期表(专业版)
- 北京中考英语作文模板
- 订单运作与产品交付流程
- 暗黑破坏神2所有绿色套装(大图)
评论
0/150
提交评论