sql导入导出大全.docx
- 文档编号:23842777
- 上传时间:2023-05-21
- 格式:DOCX
- 页数:16
- 大小:23.32KB
sql导入导出大全.docx
《sql导入导出大全.docx》由会员分享,可在线阅读,更多相关《sql导入导出大全.docx(16页珍藏版)》请在冰豆网上搜索。
sql导入导出大全
sql导入导出大全
2008年07月01日星期二下午03:
12
SELECT*intonewtable
FROMOpenDataSource('Microsoft.Jet.OLEDB.4.0',
'DataSource="c:
\aaaa.xls";UserID=Admin;Password=;Extendedproperties=Excel11.0')...[Sheet1$]
/*******导出到excel
execmaster..xp_cmdshell'bcpsettledb.dbo.shanghuoutc:
\temp1.xls-c-q-s"gnetdata/gnetdata"-u"sa"-p""'
/***********导入excel
select*
fromopendatasource('microsoft.jet.oledb.4.0',
'datasource="c:
\test.xls";userid=admin;password=;extendedproperties=excel5.0')...xactions
/*动态文件名
declare@fnvarchar(20),@svarchar(1000)
set@fn='c:
\test.xls'
set@s='''microsoft.jet.oledb.4.0'',
''datasource="'+@fn+'";userid=admin;password=;extendedproperties=excel5.0'''
set@s='select*fromopendatasource('+@s+')...sheet1$'
exec(@s)
*/
selectcast(cast(科目编号asnumeric(10,2))asnvarchar(255))+' '转换后的别名
fromopendatasource('microsoft.jet.oledb.4.0',
'datasource="c:
\test.xls";userid=admin;password=;extendedproperties=excel5.0')...xactions
/**********************excel导到远程sql
insertopendatasource(
'sqloledb',
'datasource=远程ip;userid=sa;password=密码'
).库名.dbo.表名(列名1,列名2)
select列名1,列名2
fromopendatasource('microsoft.jet.oledb.4.0',
'datasource="c:
\test.xls";userid=admin;password=;extendedproperties=excel5.0')...xactions
/**导入文本文件
execmaster..xp_cmdshell'bcpdbname..tablenameinc:
\dt.txt-c-sservername-usa-ppassword'
/**导出文本文件
execmaster..xp_cmdshell'bcpdbname..tablenameoutc:
\dt.txt-c-sservername-usa-ppassword'
或
execmaster..xp_cmdshell'bcp"select*fromdbname..tablename"queryoutc:
\dt.txt-c-sservername-usa-ppassword'
导出到txt文本,用逗号分开
execmaster..xp_cmdshell'bcp"库名..表名"out"d:
\tt.txt"-c-t,-usa-ppassword'
bulkinsert库名..表名
from'c:
\test.txt'
with(
fieldterminator=';',
rowterminator='\n'
)
--/*dbaseiv文件
select*from
openrowset('microsoft.jet.oledb.4.0'
,'dbaseiv;hdr=no;imex=2;database=c:
\','select*from[客户资料4.dbf]')
--*/
--/*dbaseiii文件
select*from
openrowset('microsoft.jet.oledb.4.0'
,'dbaseiii;hdr=no;imex=2;database=c:
\','select*from[客户资料3.dbf]')
--*/
--/*foxpro数据库
select*fromopenrowset('msdasql',
'driver=microsoftvisualfoxprodriver;sourcetype=dbf;sourcedb=c:
\',
'select*from[aa.dbf]')
--*/
**************导入dbf文件****************/
select*fromopenrowset('msdasql',
'driver=microsoftvisualfoxprodriver;
sourcedb=e:
\vfp98\data;
sourcetype=dbf',
'select*fromcustomerwherecountry!
="usa"orderbycountry')
go
/*****************导出到dbf***************/
如果要导出数据到已经生成结构(即现存的)foxpro表中,可以直接用下面的sql语句
insertintoopenrowset('msdasql',
'driver=microsoftvisualfoxprodriver;sourcetype=dbf;sourcedb=c:
\',
'select*from[aa.dbf]')
select*from表
说明:
sourcedb=c:
\指定foxpro表所在的文件夹
aa.dbf指定foxpro表的文件名.
/*************导出到access********************/
insertintoopenrowset('microsoft.jet.oledb.4.0',
'x:
\a.mdb';'admin';'',a表)select*from数据库名..b表
/*************导入access********************/
insertintob表selet*fromopenrowset('microsoft.jet.oledb.4.0',
'x:
\a.mdb';'admin';'',a表)
文件名为参数
declare@fnamevarchar(20)
set@fname='d:
\test.mdb'
exec('selecta.*fromopendatasource(''microsoft.jet.oledb.4.0'',
'''+@fname+''';''admin'';'''',topics)asa')
select*
fromopendatasource('microsoft.jet.oledb.4.0',
'datasource="f:
\northwind.mdb";jetoledb:
databasepassword=123;userid=admin;password=;')...产品
*********************导入xml 文件
declare@idocint
declare@docvarchar(1000)
--samplexmldocument
set@doc='
whitered"> happycustomer. ' --createaninternalrepresentationofthexmldocument. execsp_xml_preparedocument@idocoutput,@doc --executeaselectstatementusingopenxmlrowsetprovider. select* fromopenxml(@idoc,'/root/customer/order',1) with(oidchar(5), amountfloat, commentntext'text()') execsp_xml_removedocument@idoc ? ? ? ? ? ? ? /**********************excel导到txt****************************************/ 想用 select*intoopendatasource(...)fromopendatasource(...) 实现将一个excel文件内容导入到一个文本文件 假设excel中有两列,第一列为姓名,第二列为很行帐号(16位)且银行帐号导出到文本文件后分两部分,前8位和后8位分开。 邹健: 如果要用你上面的语句插入的话,文本文件必须存在,而且有一行: 姓名,银行账号1,银行账号2然后就可以用下面的语句进行插入 注意文件名和目录根据你的实际情况进行修改. insertinto opendatasource('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' ,'excel5.0;hdr=yes;imex=2;database=c: \a.xls' --,sheet1$) )...[sheet1$] 如果你想直接插入并生成文本文件,就要用bcp declare@sqlvarchar(8000),@tbnamevarchar(50) --首先将excel表内容导入到一个全局临时表 select@tbname='[##temp'+cast(newid()asvarchar(40))+']',@sql='select姓名,银行账号1=left(银行账号,8),银行账号2=right(银行账号,8) into'+@tbname+'from opendatasource(''microsoft.jet.oledb.4.0'' ,''excel5.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' execmaster..xp_cmdshell@sql --删除临时表 exec('droptable'+@tbname) /********************导整个数据库*********************************************/ 用bcp实现的存储过程 /* 实现数据导入/导出的存储过程 根据不同的参数,可以实现导入/导出整个数据库/单个表调用示例: --导出调用示例 ----导出单个表 execfile2table'zj','','','xzkh_sa..地区资料','c: \zj.txt',1 ----导出整个数据库 execfile2table'zj','','','xzkh_sa','c: \docman',1 --导入调用示例 ----导入单个表 execfile2table'zj','','','xzkh_sa..地区资料','c: \zj.txt',0 ----导入整个数据库 execfile2table'zj','','','xzkh_sa','c: \docman',0 */ ifexists(select1fromsysobjectswherename='file2table'andobjectproperty(id,'isprocedure')=1) dropprocedurefile2table go createprocedurefile2table @servernamevarchar(200)--服务器名 ,@usernamevarchar(200)--用户名,如果用nt验证方式,则为空'' ,@passwordvarchar(200)--密码 ,@tbnamevarchar(500)--数据库.dbo.表名,如果不指定: .dbo.表名,则导出数据库的所有用户表 ,@filenamevarchar(1000)--导入/导出路径/文件名,如果@tbname参数指明是导出整个数据库,则这个参数是文件存放路径,文件名自动用表名.txt ,@isoutbit--1为导出,0为导入 as declare@sqlvarchar(8000) if@tbnamelike'%.%.%'--如果指定了表名,则直接导出单个表 begin set@sql='bcp'+@tbname +casewhen@isout=1then'out'else'in'end +'"'+@filename+'"/w' +'/s'+@servername +casewhenisnull(@username,'')=''then''else'/u'+@usernameend +'/p'+isnull(@password,'') execmaster..xp_cmdshell@sql end else begin--导出整个数据库,定义游标,取出所有的用户表 declare@m_tbnamevarchar(250) ifright(@filename,1)<>'\'set@filename=@filename+'\' set@m_tbname='declare#tbcursorforselectnamefrom'+@tbname+'..sysobjectswherextype=''u''' exec(@m_tbname) open#tb fetchnextfrom#tbinto@m_tbname while@@fetch_status=0 begin set@sql='bcp'+@tbname+'..'+@m_tbname +casewhen@isout=1then'out'else'in'end +'"'+@filename+@m_tbname+'.txt"/w' +'/s'+@servername +casewhenisnull(@username,'')=''then''else'/u'+@usernameend +'/p'+isnull(@password,'') execmaster..xp_cmdshell@sql fetchnextfrom#tbinto@m_tbname end close#tb deallocate#tb end go /*************oracle**************/ execsp_addlinkedserver'oraclesvr', 'oracle7.3', 'msdaora', 'orcldb' go deletefromopenquery(mailser,'select*fromyulin') select*fromopenquery(mailser,'select*fromyulin') updateopenquery(mailser,'select*fromyulinwhereid=15')setdisorder=555,catago=888 insertintoopenquery(mailser,'selectdisorder,catagofromyulin')values(333,777) 补充: 对于用bcp导出,是没有字段名的. 用openrowset导出,需要事先建好表. 用openrowset导入,除access及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文件的工作表名,一般要加上$才能正常使用. 下面是导出真正Excel文件的方法: /*--数据导出EXCEL 导出表中的数据到Excel,包含字段名,文件为真正的Excel文件 如果文件不存在,将自动创建文件 如果表不存在,将自动创建表 基于通用性考虑,仅支持导出标准数据类型 ---*/ /*--调用示例 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),@fdlis
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- sql 导入 导出 大全