Windows XP Windows 7 Windows 2003 Windows Vista Windows教程綜合 Linux 系統教程
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟件教程
 Windows教程網 >> 電腦軟件教程 >> 關於電腦軟件教程 >> SQL Server數據庫SQL語句導入導出大全

SQL Server數據庫SQL語句導入導出大全

日期:2017/2/10 12:02:29      編輯:關於電腦軟件教程

/*******  導出到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 

Copyright © Windows教程網 All Rights Reserved