设为首页 收藏本站
查看: 1495|回复: 0

[经验分享] [sql server] SQL语句导入导出大全

[复制链接]

尚未签到

发表于 2016-10-30 08:33:40 | 显示全部楼层 |阅读模式
SQL语句导入导出大全    /*******  导出到excelEXEC master..xp_cmdshell 'bcp SettleDB.dbo.shanghu out c:/temp1.xls -c -q -S"GNETDATA/GNETDATA" -U"sa" -P""'/***********  导入ExcelSELECT * FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0','Data Source="c:/test.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...xactions/*动态文件名declare @fn varchar(20),@s varchar(1000)set @fn = 'c:/test.xls'set @s ='''Microsoft.Jet.OLEDB.4.0'',''Data Source="'+@fn+'";User ID=Admin;Password=;Extended properties=Excel 5.0'''set @s = 'SELECT * FROM OpenDataSource ('+@s+')...sheet1$'exec(@s)*/SELECT cast(cast(科目编号 as numeric(10,2)) as nvarchar(255))+' ' 转换后的别名FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0','Data Source="c:/test.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...xactions/********************** EXCEL导到远程SQLinsert OPENDATASOURCE('SQLOLEDB','Data Source=远程ip;User ID=sa;Password=密码').库名.dbo.表名 (列名1,列名2)SELECT 列名1,列名2FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0','Data Source="c:/test.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...xactions/** 导入文本文件EXEC master..xp_cmdshell 'bcp dbname..tablename in c:/DT.txt -c -Sservername -Usa -Ppassword'/** 导出文本文件EXEC master..xp_cmdshell 'bcp dbname..tablename out c:/DT.txt -c -Sservername -Usa -Ppassword'或EXEC master..xp_cmdshell 'bcp "Select * from dbname..tablename" queryout c:/DT.txt -c -Sservername -Usa -Ppassword'导出到TXT文本,用逗号分开exec master..xp_cmdshell 'bcp "库名..表名" out "d:/tt.txt" -c -t ,-U sa -P password'BULK INSERT 库名..表名FROM 'c:/test.txt'WITH (FIELDTERMINATOR = ';',ROWTERMINATOR = '/n')--/* dBase IV文件select * from OPENROWSET('MICROSOFT.JET.OLEDB.4.0','dBase IV;HDR=NO;IMEX=2;DATABASE=C:/','select * from [客户资料4.dbf]')--*/--/* dBase III文件select * from OPENROWSET('MICROSOFT.JET.OLEDB.4.0','dBase III;HDR=NO;IMEX=2;DATABASE=C:/','select * from [客户资料3.dbf]')--*/--/* FoxPro 数据库select * from openrowset('MSDASQL','Driver=Microsoft Visual FoxPro Driver;SourceType=DBF;SourceDB=c:/','select * from [aa.DBF]')--*//**************导入DBF文件****************/select * from openrowset('MSDASQL','Driver=Microsoft Visual FoxPro Driver;SourceDB=e:/VFP98/data;SourceType=DBF','select * from customer where country != "USA" order by country')go/***************** 导出到DBF ***************/如果要导出数据到已经生成结构(即现存的)FOXPRO表中,可以直接用下面的SQL语句insert into openrowset('MSDASQL','Driver=Microsoft Visual FoxPro Driver;SourceType=DBF;SourceDB=c:/','select * from [aa.DBF]')select * from 表说明:SourceDB=c:/  指定foxpro表所在的文件夹aa.DBF        指定foxpro表的文件名./*************导出到Access********************/insert into openrowset('Microsoft.Jet.OLEDB.4.0', 'x:/A.mdb';'admin';'',A表) select * from 数据库名..B表/*************导入Access********************/insert into B表 selet * from openrowset('Microsoft.Jet.OLEDB.4.0', 'x:/A.mdb';'admin';'',A表)文件名为参数declare @fname varchar(20)set @fname = 'd:/test.mdb'exec('SELECT a.* FROM opendatasource(''Microsoft.Jet.OLEDB.4.0'','''+@fname+''';''admin'';'''', topics) as a ')SELECT * FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0','Data Source="f:/northwind.mdb";Jet OLEDB:Database Password=123;User ID=Admin;Password=;')...产品*********************  导入 xml 文件DECLARE @idoc intDECLARE @doc varchar(1000)--sample XML documentSET @doc ='<root><customer cid="C1" name="Janine" city="Issaquah"><order oid="O1" date="1/20/1996" amount="3.5"></order><order oid="O2" date="4/30/1997" amount="13.4">Customer was very satisfied</order></customer><customer cid="C2" name="Ursula" city="Oelde"><order oid="O3" date="7/14/1999" amount="100" note="Wrap it blue white red"><urgency>Important</urgency>Happy Customer.</order><order oid="O4" date="1/20/1996" amount="10000"></order></customer></root>'-- Create an internal representation of the XML document.EXEC sp_xml_preparedocument @idoc OUTPUT, @doc-- Execute a SELECT statement using OPENXML rowset provider.SELECT *FROM OPENXML (@idoc, '/root/Customer/Order', 1)WITH (oid     char(5), amount  float, comment ntext 'text()')EXEC sp_xml_removedocument @idoc???????/**********************Excel导到Txt****************************************/想用select * into opendatasource(...) from opendatasource(...)实现将一个Excel文件内容导入到一个文本文件假设Excel中有两列,第一列为姓名,第二列为很行帐号(16位)且银行帐号导出到文本文件后分两部分,前8位和后8位分开。邹健:如果要用你上面的语句插入的话,文本文件必须存在,而且有一行:姓名,银行账号1,银行账号2然后就可以用下面的语句进行插入注意文件名和目录根据你的实际情况进行修改.insert intoopendatasource('MICROSOFT.JET.OLEDB.4.0','Text;HDR=Yes;DATABASE=C:/')...[aa#txt]--,aa#txt)--*/select 姓名,银行账号1=left(银行账号,8),银行账号2=right(银行账号,8) from opendatasource('MICROSOFT.JET.OLEDB.4.0','Excel 5.0;HDR=YES;IMEX=2;DATABASE=c:/a.xls'--,Sheet1$))...[Sheet1$]如果你想直接插入并生成文本文件,就要用bcpdeclare @sql varchar(8000),@tbname varchar(50)--首先将excel表内容导入到一个全局临时表select @tbname='[##temp'+cast(newid() as varchar(40))+']',@sql='select 姓名,银行账号1=left(银行账号,8),银行账号2=right(银行账号,8) into '+@tbname+' from opendatasource(''MICROSOFT.JET.OLEDB.4.0'',''Excel 5.0;HDR=YES;IMEX=2;DATABASE=c:/a.xls'')...[Sheet1$]'exec(@sql)--然后用bcp从全局临时表导出到文本文件set @sql='bcp "'+@tbname+'" out "c:/aa.txt" /S"(local)" /P"" /c'exec master..xp_cmdshell @sql--删除临时表exec('drop table '+@tbname)/********************导整个数据库*********************************************/用bcp实现的存储过程/*实现数据导入/导出的存储过程根据不同的参数,可以实现导入/导出整个数据库/单个表调用示例:--导出调用示例----导出单个表exec file2table 'zj','','','xzkh_sa..地区资料','c:/zj.txt',1----导出整个数据库exec file2table 'zj','','','xzkh_sa','C:/docman',1--导入调用示例----导入单个表exec file2table 'zj','','','xzkh_sa..地区资料','c:/zj.txt',0----导入整个数据库exec file2table 'zj','','','xzkh_sa','C:/docman',0*/if exists(select 1 from sysobjects where name='File2Table' and objectproperty(id,'IsProcedure')=1)drop procedure File2Tablegocreate procedure File2Table@servername varchar(200)  --服务器名,@username varchar(200)   --用户名,如果用NT验证方式,则为空'',@password varchar(200)   --密码,@tbname varchar(500)   --数据库.dbo.表名,如果不指定:.dbo.表名,则导出数据库的所有用户表,@filename varchar(1000)  --导入/导出路径/文件名,如果@tbname参数指明是导出整个数据库,则这个参数是文件存放路径,文件名自动用表名.txt,@isout bit      --1为导出,0为导入asdeclare @sql varchar(8000)if @tbname like '%.%.%' --如果指定了表名,则直接导出单个表beginset @sql='bcp '+@tbname+case when @isout=1 then ' out ' else ' in ' end+' "'+@filename+'" /w'+' /S '+@servername+case when isnull(@username,'')='' then '' else ' /U '+@username end+' /P '+isnull(@password,'')exec master..xp_cmdshell @sqlendelsebegin --导出整个数据库,定义游标,取出所有的用户表declare @m_tbname varchar(250)if right(@filename,1)'/' set @filename=@filename+'/'set @m_tbname='declare #tb cursor for select name from '+@tbname+'..sysobjects where xtype=''U'''exec(@m_tbname)open #tbfetch next from #tb into @m_tbnamewhile @@fetch_status=0beginset @sql='bcp '+@tbname+'..'+@m_tbname+case when @isout=1 then ' out ' else ' in ' end+' "'+@filename+@m_tbname+'.txt " /w'+' /S '+@servername+case when isnull(@username,'')='' then '' else ' /U '+@username end+' /P '+isnull(@password,'')exec master..xp_cmdshell @sqlfetch next from #tb into @m_tbnameendclose #tbdeallocate #tb endgo/************* Oracle **************/EXEC sp_addlinkedserver 'OracleSvr', 'Oracle 7.3', 'MSDAORA', 'ORCLDB'GOdelete from openquery(mailser,'select *  from yulin')select *  from openquery(mailser,'select *  from yulin')update openquery(mailser,'select * from  yulin where id=15')set disorder=555,catago=888insert into openquery(mailser,'select disorder,catago from  yulin')values(333,777)补充:对于用bcp导出,是没有字段名的.用openrowset导出,需要事先建好表.用openrowset导入,除ACCESS及EXCEL外,均不支持非本机数据导入作者Blog:http://blog.csdn.net/whchen/

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-293173-1-1.html 上篇帖子: SQL SERVER 性能优化若干 下篇帖子: [sql server] SQL Server 安全检查列表
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表