prolifes
SQL表导入EXCEL
/*****
EXEC master..xp_cmdshell \'bcp SettleDB.dbo.shanghu out c:\temp1.xls -c -q -S"GNETDATA/GNETDATA" -U"sa" -P""\'

里面settledb为数据库名,shanghu为表名,GNETDATA/GNETDATA为服务器名
***/
连接 Excel,注意要在表名后接上$
select * from OpenDataSource(\'Microsoft.Jet.OLEDB.4.0\',\'Data Source="c:\a.xls";User ID=Admin;Password=;Extended propertie*=**cel 5.0\')[lyxyb$] 

连接ACCESS
SELECT *  FROM OPENROWSET(\'Microsoft.Jet.OLEDB.4.0\'\'c:\test.mdb\'\'admin\'\'\', SHEET1) 


 *******     导出到excel  
  EXEC   master..xp_cmdshell   \'bcp   SettleDB.dbo.shanghu   out   c:\temp1.xls   -c   -q   -S"GNETDATA/GNETDATA"   -U"sa"   -P""\'  
     
  /***********     导入Excel  
  select   *   from   openrowset(\'MicroSoft.Jet.OleDB.4.0\',  
                                                    \'Excel   5.0;HDR=yes;Database=c:\test.xls\',sheet1$)   
  SELECT   *    
  FROM   OpenDataSource(   \'Microsoft.Jet.OLEDB.4.0\',  
      \'Data   Source="c:\test.xls";User   ID=Admin;Password=;Extended   propertie*=**cel   5.0\')...xactions  
     
  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   propertie*=**cel   5.0\')...xaction*  
     
  /**   导入文本文件  
  **EC   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表)  
 
  *********************     导入   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\',\'\',\'\',\'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   

分类:

技术点:

相关文章: