sql server导入 导出数据

sql 表和表之间到导入

表A导入到表B

insert into B Select * from A

表A 的框架结构导入到表B不导入数据

select * into B from A

以下都是参考网上归纳总结的:

select * from OPENROWSET(''MICROSOFT.JET.OLEDB.4.0''
,''Excel 5.0;HDR=YES;DATABASE=c:\1.xls'',sheet2$)

 

导入导出大全    
*******     导出到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   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''  
)  

 

jackey  2009.06.23 实例:

 

实例 1 导出

CREATE     PROCEDURE  jackeytest11
  
AS

declare @bcpString varchar(1000)
set @bcpString='BCP  "select * from  CACDB_S1000.dbo.tYHJBXX"  queryout "d:\aaa.txt" -c -S "localhost" -U "sa" -P "xxxxxx"'
EXEC master..xp_cmdshell @bcpString
GO

实例 2 导出

EXEC   master..xp_cmdshell   'bcp   "CACDB_S1000.dbo.tYHJBXX111"  out   "d:\bbb.txt"   -c  -S "localhost"   -Usa   -P "xxxxxx"'  

 

实例 3 导入

 

EXEC   master..xp_cmdshell   'bcp   "CACDB_S1000.dbo.tYHJBXX111"  in   "d:\aaa.txt"   -c  -S "localhost"   -Usa   -P "xxxxxx"'

 

 

实例 4 导入

BULK   INSERT   CACDB_S1000.dbo.tYHJBXX111  
FROM   'd:\aaa.txt' 
WITH(  
    FIELDTERMINATOR='\t',  
    ROWTERMINATOR='\n' 
 )

实例 5  导出到excel  

EXEC   master..xp_cmdshell   'bcp   "CACDB_S1000.dbo.tYHJBXX111"  out   "d:\temp1.xls"   -c  -S "localhost"   -Usa   -P "xxxxxx"'  

 

实例 6  复制表结构 同时也把表中的数据复制到新表中(执行此操作时 新的表名在数据库中不应该存在)

select * into tYHJBXX222 from tYHJBXX 

 


实例 7 

/*  
用bcp实现的存储过程  

实现数据导入/导出的存储过程  
                    根据不同的参数,可以实现导入/导出整个数据库/单个表  
调用示例:  
--导出调用示例  
----导出单个表  
exec   file2table   'localhost','sa','xxxxxx','CACDB_S1000.dbo.tYHJBXX','d:\tYHJBXX.txt',1
  
----导出整个数据库  (执行该操作之前要先在d盘根目录下建d:\CACDB_S1000文件夹)
exec   file2table   'localhost','sa','xxxxxx','CACDB_S1000','d:\CACDB_S1000',1  
   
--导入调用示例  
----导入单个表   (执行此操作前,表必须在数据库中存在)
exec   file2table   'localhost','sa','xxxxxx','CACDB_S1000.dbo.tYHJBXX','d:\tYHJBXX.txt',0  
----导入整个数据库 
exec   file2table   'localhost','sa','xxxxxx','CACDB_S1000','d:\CACDB_S1000',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

 

 


   
--/*   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  

 

*********************     导入   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   
   

 

 

你可能感兴趣的:(数据结构,sql,SQL Server,Excel,XP)