zoukankan      html  css  js  c++  java
  • SQL语句导入导出大全

    /*******     导出到excel  
      EXEC   master..xp_cmdshell   'bcp   SettleDB.dbo.shanghu   out   c:\temp1.xls   -c   -q   -S"GNETDATA/GNETDATA"   -U"sa"   -P""'  
       
      /***********     导入Excel  
      SELECT   *    
      FROM   OpenDataSource(   'Microsoft.Jet.OLEDB.4.0',  
          'Data   Source="c:\test.xls";User   ID=Admin;Password=;Extended   properties=Excel   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   properties=Excel   5.0')...xactions  
       
      /**   导入文本文件  
      EXEC   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   
       
    /**********************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)  


  • 相关阅读:
    arpg网页游戏之地图(四)
    arpg网页游戏之地图(三)
    arpg网页游戏之地图(二)
    arpg网页游戏之地图(一)
    cocos2dx三种定时器的使用以及停止schedule,scheduleUpdate,scheduleOnce。
    盖茨的几点忠告【转】
    桌面快捷方式图标都有一个蓝色的阴影
    人际关系百条细节
    需求分析的六个原则
    小细节,你做到了么?
  • 原文地址:https://www.cnblogs.com/chenqingwei/p/1765262.html
Copyright © 2011-2022 走看看