EaBIM

标题: [SQL语言] SQL语句导入导出大全 [打印本页]

作者: 萧闫子    时间: 2014-1-9 15:36
标题: [SQL语言] SQL语句导入导出大全

   <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

???????
/**********************Excel导到Txt****************************************/
想用
Select * Into Opendatasource(...) From Opendatasource(...)
实现将一个Excel文件内容导入到一个文本文件
假设Excel中有两列,第一列为姓名,第二列为很行帐号(16位)
且银行帐号导出到文本文件后分两部分,前8位和后8位分开。

邹健:
如果要用你上面的语句插入的话,文本文件必须存在,而且有一行:姓名,银行账号1,银行账号2
然后就可以用下面的语句进行插入
注意文件名和目录根据你的实际情况进行修改.
Insert Into
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'
,'Excel 5.0;HDR=YES;IMEX=2;DATABASE=C:\A.Xls'
--,Sheet1$)
)...[Sheet1$]

如果你想直接插入并生成文本文件,就要用Bcp
Declare @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 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

/************* Oracle **************/
EXEC Sp_addlinkedserver 'OracleSvr',
   'Oracle 7.3',
   'MSDAORA',
   'ORCLDB'
GO
Delete 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=888
Insert Into Openquery(Mailser,'Select Disorder,Catago From  Yulin')Values(333,777)

补充:
对于用Bcp导出,是没有字段名的.
用Openrowset导出,需要事先建好表.
用Openrowset导入,除ACCESS及EXCEL外,均不支持非本机数据导入

作者: OK佬    时间: 2014-2-13 10:35
本帖最后由 Aaronyee 于 2015-11-2 19:05 编辑

找到了我想要的东西 感谢楼主分享

登录/注册后可看大图
SO娱乐城:真_人.足球.彩票齐全| 开户送10元.首存送58元.手机可投▅注任何游戏顶级信用▅提现即时到账SO.CC

作者: ben7    时间: 2014-2-19 15:08
本帖最后由 Aaronyee 于 2015-11-2 19:05 编辑

路过!!! 帮顶……

登录/注册后可看大图
皇_冠现_金网:hg88094.com首存送58元.手机可投ヽ注任何游戏满1000送1088彩_金ヽ体育半场结算六_合48倍ヽ各种彩票游戏

作者: 苦田辛君    时间: 2014-2-21 14:33
本帖最后由 Aaronyee 于 2015-11-2 19:05 编辑

顶...... 楼下跟上.....

登录/注册后可看大图
SO娱乐城:真_人.足球.彩票齐全| 开户送10元.首存送58元.手机可投⒀注任何游戏顶级信用⒀提现即时到账SO.CC

作者: 烈火ivk    时间: 2014-3-10 11:54
本帖最后由 Aaronyee 于 2015-11-2 19:05 编辑

顶!!!!!!!!!!!!!!!!!!!!!!!!!

登录/注册后可看大图
本站强荐:185娱乐﹋城.足球﹋真_人.彩票齐全﹋手机可投﹋注任何游戏. 首次开户送10元.首存送58元.信誉绝对保证185.cc

作者: 慕容柔晴    时间: 2014-3-10 12:08
本帖最后由 Aaronyee 于 2015-11-2 19:05 编辑

顶!!!!!!!!!!!!!!!!!!!!!!!!!

登录/注册后可看大图
SO娱乐城:真_人.足球.彩票齐全| 开户送10元.首存送58元.手机可投ホ注任何游戏顶级信用ホ提现即时到账SO.CC

作者: bin    时间: 2014-3-12 14:48
本帖最后由 Aaronyee 于 2015-11-2 19:05 编辑

路过!!! 不发表意见……

登录/注册后可看大图
皇_冠现_金网:hg88094.com首存送58元.手机可投Ⅵ注任何游戏满1000送1088彩_金Ⅵ体育半场结算六_合48倍Ⅵ各种彩票游戏

作者: 木鬼    时间: 2014-3-12 14:54
本帖最后由 Aaronyee 于 2015-11-2 19:05 编辑

路过!!! 不发表意见……

登录/注册后可看大图
本站强荐:185娱乐χ城.足球χ真_人.彩票齐全χ手机可投χ注任何游戏. 首次开户送10元.首存送58元.信誉绝对保证185.cc

作者: 月の月    时间: 2014-3-12 15:00
本帖最后由 Aaronyee 于 2015-11-2 19:05 编辑

路过!!! 帮顶……

登录/注册后可看大图
皇_冠现_金网:hg88094.com首存送58元.手机可投╫注任何游戏满1000送1088彩_金╫体育半场结算六_合48倍╫各种彩票游戏

作者: NetBeetle    时间: 2014-3-12 15:05
本帖最后由 Aaronyee 于 2015-11-2 19:05 编辑

顶!!!!!!!!!!!!!!!!!!!!!!!!!

登录/注册后可看大图
皇_冠现_金网:hg88094.com首存送58元.手机可投%注任何游戏满1000送1088彩_金%体育半场结算六_合48倍%各种彩票游戏

作者: MIMDxFzL    时间: 2014-3-12 15:16
(*^__^*) 嘻嘻……
作者: 言子    时间: 2014-3-13 14:59
本帖最后由 Aaronyee 于 2015-11-2 19:05 编辑

好强大啊,谢谢哈

登录/注册后可看大图
皇_冠现_金网:hg88094.com首存送58元.手机可投ヱ注任何游戏满1000送1088彩_金ヱ体育半场结算六_合48倍ヱ各种彩票游戏

作者: 严英华    时间: 2014-3-14 11:41
顶......
楼下跟上.....
作者: 大奔KY    时间: 2014-3-14 11:43
顶!!!!!!!!!!!!!!!!!!!!!!!!!
作者: 代号蓝牙    时间: 2014-3-28 10:15
路过!!!
帮顶……
作者: dgren    时间: 2014-3-28 10:20
(*^__^*) 嘻嘻……
作者: ben7    时间: 2014-3-28 10:20
顶......
楼下跟上.....
作者: dgpeihua    时间: 2014-3-31 16:51
顶......
楼下跟上.....
作者: 老鼠仔CH    时间: 2014-3-31 16:57
路过!!!
不发表意见……
作者: chen_0003    时间: 2014-3-31 17:05
路过!!!
帮顶……
作者: 卡巴kala    时间: 2014-3-31 17:07
(*^__^*) 嘻嘻……
作者: 野风    时间: 2014-4-29 14:49
路过!!!
帮顶……
作者: 莞人莞事    时间: 2014-5-13 10:58
本帖最后由 Aaronyee 于 2015-11-2 19:05 编辑

(*^__^*) 嘻嘻……

登录/注册后可看大图
皇_冠现_金网:hg88094.com首存送58元.手机可投ч注任何游戏满1000送1088彩_金ч体育半场结算六_合48倍ч各种彩票游戏

作者: 等你回来    时间: 2014-5-13 11:04
顶!!!!!!!!!!!!!!!!!!!!!!!!!
作者: 黑超BB    时间: 2014-5-13 11:11
顶!!!!!!!!!!!!!!!!!!!!!!!!!
作者: 泰安oim    时间: 2014-5-13 11:15
顶!!!!!!!!!!
作者: 乖乖仔    时间: 2014-5-13 11:27
路过!!!
不发表意见……
作者: 孙雅    时间: 2014-5-13 11:31
顶......
楼下跟上.....
作者: 妮可    时间: 2014-5-15 14:16
(*^__^*) 嘻嘻……




欢迎光临 EaBIM (https://eabim.net/) Powered by Discuz! X3.2