加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

SQL?Server?SQL语句导入导出大全(2)

发布时间:2020-12-12 02:23:07 所属栏目:MySql教程 来源:网络整理
导读:*********************??导入?xml 文件? DECLARE?@idoc?int? DECLARE?@doc?varchar(1000)? --sample?XML?document? SET?@doc?=’? root? ??Customer?cid=?"C1"?name="Janine"?city="Issaquah"? ??????Order?oid="O1"?date="1/20/1996"?amount="3.5"?/? ??????
*********************??导入?xml 文件?

DECLARE?@idoc?int?
DECLARE?@doc?varchar(1000)?
--sample?XML?document?
SET?@doc?=’?
<root>?
??<Customer?cid=?"C1"?name="Janine"?city="Issaquah">?
??????<Order?oid="O1"?date="1/20/1996"?amount="3.5"?/>?
??????<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"/>?
???</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?

/********************导整个数据库*********************************************/?

用bcp实现的存储过程?

/*?
?实现数据导入/导出的存储过程?
?????????根据不同的参数,可以实现导入/导出整个数据库/单个表?
?调用示例:?
--导出调用示例?
----导出单个表?
exec?file2table?’zj’,’’,’xzkh_sa..地区资料’,’c:zj.txt’,1?
----导出整个数据库?
exec?file2table?’zj’,’xzkh_sa’,’C:docman’,1?

--导入调用示例?
----导入单个表?
exec?file2table?’zj’,0?
----导入整个数据库?
exec?file2table?’zj’,0?

*/?
if?exists(select?1?from?sysobjects?where?name=’File2Table’?and?objectproperty(id,’IsProcedure’)=1)?
?drop?procedure?File2Table?
go?
create?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为导入?
as?
declare?@sql?varchar(8000)?

if?@tbname?like?’%.%.%’?--如果指定了表名,则直接导出单个表?
begin?
?set?@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?@sql?
end?
else?
begin?--导出整个数据库,定义游标,取出所有的用户表?
?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?#tb?
?fetch?next?from?#tb?into?@m_tbname?
?while?@@fetch_status=0?
?begin?
??set?@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?@sql?
??fetch?next?from?#tb?into?@m_tbname?
?end?
?close?#tb?
?deallocate?#tb??
end?
go?

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读