一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

怎樣將一個數(shù)據(jù)表中的數(shù)據(jù)以文本的方式導(dǎo)出?

 張青 2009-12-28
*********************   導(dǎo)入   xml 文件   [Page]  
   
  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    
   
   
     
   
  /**********************Excel導(dǎo)到Txt****************************************/    
  想用    
  select   *   into   opendatasource(...)   from   opendatasource(...)    
  實現(xiàn)將一個Excel文件內(nèi)容導(dǎo)入到一個文本文件    
   
  假設(shè)Excel中有兩列,第一列為姓名,第二列為很行賬號(16位)    
  且銀行賬號導(dǎo)出到文本文件后分兩部分,前8位和后8位分開。    
   
   
  鄒健:    
  如果要用你上面的語句插入的話,文本文件必須存在,而且有一行:姓名,銀行賬號1,銀行賬號2    
  然后就可以用下面的語句進行插入    
  注意文件名和目錄根據(jù)你的實際情況進行修改.    
   
  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表內(nèi)容導(dǎo)入到一個全局臨時表    
  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從全局臨時表導(dǎo)出到文本文件    
  set   @sql='bcp   "'+@tbname+'"   out   "c:\aa.txt"   /S"(local)"   /P""   /c'    
  exec   master..xp_cmdshell   @sql    
   
  --刪除臨時表    
  exec('drop   table   '+@tbname)    
   
   
  /********************導(dǎo)整個數(shù)據(jù)庫*********************************************/    
  [Page]  
   
   
  用bcp實現(xiàn)的存儲過程    
   
   
  /*    
  實現(xiàn)數(shù)據(jù)導(dǎo)入/導(dǎo)出的存儲過程    
  根據(jù)不同的參數(shù),可以實現(xiàn)導(dǎo)入/導(dǎo)出整個數(shù)據(jù)庫/單個表    
  調(diào)用示例:    
  --導(dǎo)出調(diào)用示例    
  ----導(dǎo)出單個表    
  exec   file2table   'zj','','','xzkh_sa..地區(qū)資料','c:\zj.txt',1    
  ----導(dǎo)出整個數(shù)據(jù)庫    
  exec   file2table   'zj','','','xzkh_sa','C:\docman',1    
   
  --導(dǎo)入調(diào)用示例    
  ----導(dǎo)入單個表    
  exec   file2table   'zj','','','xzkh_sa..地區(qū)資料','c:\zj.txt',0    
  ----導(dǎo)入整個數(shù)據(jù)庫    
  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)   --服務(wù)器名    
  ,@username   varchar(200)   --用戶名,如果用NT驗證方式,則為空''    
  ,@password   varchar(200)   --密碼    
  ,@tbname   varchar(500)   --數(shù)據(jù)庫.dbo.表名,如果不指定:.dbo.表名,則導(dǎo)出數(shù)據(jù)庫的所有用戶表    
  ,@filename   varchar(1000)   --導(dǎo)入/導(dǎo)出路徑/文件名,如果@tbname參數(shù)指明是導(dǎo)出整個數(shù)據(jù)庫,則這個參數(shù)是文件存放路徑,文件名自動用表名.txt    
  ,@isout   bit   --1為導(dǎo)出,0為導(dǎo)入    
  as    
  declare   @sql   varchar(8000)    
   
  if   @tbname   like   '%.%.%'   --如果指定了表名,則直接導(dǎo)出單個表    
  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   --導(dǎo)出整個數(shù)據(jù)庫,定義游標,取出所有的用戶表    
  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導(dǎo)出,是沒有字段名的.    
   
  用openrowset導(dǎo)出,需要事先建好表.    
   
  用openrowset導(dǎo)入,除ACCESS及EXCEL外,均不支持非本機數(shù)據(jù)導(dǎo)入

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    亚洲国产天堂av成人在线播放| 老司机精品线观看86| 国产又粗又爽又猛又黄的| 又色又爽又无遮挡的视频 | 欧美人妻盗摄日韩偷拍| 少妇毛片一区二区三区| 国产人妻熟女高跟丝袜| 色综合久久超碰色婷婷| 亚洲性生活一区二区三区| 亚洲一区二区精品免费视频| 精品日韩av一区二区三区| 国产日韩欧美综合视频| 青青操视频在线播放免费| 自拍偷女厕所拍偷区亚洲综合| 欧美日韩综合在线第一页| 深夜福利欲求不满的人妻| 日本一二三区不卡免费| 国内精品偷拍视频久久| 亚洲中文在线中文字幕91| 日本不卡片一区二区三区| 国产欧美日产久久婷婷| 久热99中文字幕视频在线| 国产成人高清精品尤物| 亚洲欧美日韩熟女第一页| 国产综合一区二区三区av| 亚洲黄片在线免费小视频| 91欧美亚洲视频在线| 一级片黄色一区二区三区| 色哟哟在线免费一区二区三区| 亚洲午夜av久久久精品| 亚洲视频一级二级三级| 国产精品十八禁亚洲黄污免费观看| 国产大屁股喷水在线观看视频| 日韩aa一区二区三区| 欧美日韩精品一区免费| 免费午夜福利不卡片在线 视频| 国产一二三区不卡视频| 欧美精品专区一区二区| 加勒比日本欧美在线观看| 精品一区二区三区免费看| 午夜福利在线观看免费|