熟悉SQLSERVER2000的數據庫管理員都知道,其DTS可以進行數據的導入導出,其實,我們也可以使用Transact-SQL語句進行導入導出操作。在Transact-SQL語句中,我們主要使用OpenDataSource函數、OPENROWSET函數,關于函數的詳細說明,請參考SQL聯機幫助。利用下述方法,可以十分容易地實現SQLSERVER、ACCESS、EXCEL數據轉換,詳細說明如下:
一、SQLSERVER和ACCESS的數據導入導出
常規的數據導入導出:
使用DTS向導遷移你的Access數據到SQLServer,你可以使用這些步驟:
○1在SQLSERVER企業管理器中的Tools(工具)菜單上,選擇DataTransformation
○2Services(數據轉換服務),然后選擇czdImportData(導入數據)。
○3在ChooseaDataSource(選擇數據源)對話框中選擇MicrosoftAccessastheSource,然后鍵入你的.mdb數據庫(.mdb文件擴展名)的文件名或通過瀏覽尋找該文件。
○4在ChooseaDestination(選擇目標)對話框中,選擇MicrosoftOLE DBProviderforSQL Server,選擇數據庫服務器,然后單擊必要的驗證方式。
○5在SpecifyTableCopy(指定表格復制)或Query(查詢)對話框中,單擊Copytables(復制表格)。
○6在SelectSourceTables(選擇源表格)對話框中,單擊SelectAll(全部選定)。下一步,完成。
Transact-SQL語句進行導入導出:
1.在SQLSERVER里查詢access數據:
SELECT*FROMOpenDataSource('Microsoft.Jet.OLEDB.4.0','DataSource="c:\DB.mdb";UserID=Admin;Password=')...表名
2.將access導入SQLserver
在SQLSERVER里運行:
SELECT*INTOnewtableFROMOPENDATASOURCE('Microsoft.Jet.OLEDB.4.0','DataSource="c:\DB.mdb";UserID=Admin;Password=')...表名
3.將SQLSERVER表里的數據插入到Access表中
在SQLSERVER里運行:
insertintoOpenDataSource('Microsoft.Jet.OLEDB.4.0','DataSource="c:\DB.mdb";UserID=Admin;Password=')...表名(列名1,列名2)select列名1,列名2fromsql表
實例:
insertintoOPENROWSET('Microsoft.Jet.OLEDB.4.0','C:\db.mdb';'admin';'',Test)selectid,namefromTest
INSERTINTOOPENROWSET('Microsoft.Jet.OLEDB.4.0','c:\trade.mdb';'admin';'',表名)SELECT*FROMsqltablename
二、SQLSERVER和EXCEL的數據導入導出
1、在SQLSERVER里查詢Excel數據:
SELECT*FROMOpenDataSource('Microsoft.Jet.OLEDB.4.0','DataSource="c:\book1.xls";UserID=Admin;Password=;Extendedproperties=Excel5.0')...[Sheet1$]
下面是個查詢的示例,它通過用于Jet的OLEDB提供程序查詢Excel電子表格。
SELECT*FROMOpenDataSource('Microsoft.Jet.OLEDB.4.0','DataSource="c:\Finance\account.xls";UserID=Admin;Password=;Extendedproperties=Excel5.0')...xactions
2、將Excel的數據導入SQLserver:
SELECT*intonewtableFROMOpenDataSource('Microsoft.Jet.OLEDB.4.0','DataSource="c:\book1.xls";UserID=Admin;Password=;Extendedproperties=Excel5.0')...[Sheet1$]
實例:
SELECT*intonewtableFROMOpenDataSource('Microsoft.Jet.OLEDB.4.0','DataSource="c:\Finance\account.xls";UserID=Admin;Password=;Extendedproperties=Excel5.0')...xactions
3、將SQLSERVER中查詢到的數據導成一個Excel文件
T-SQL代碼:
EXECmaster..xp_cmdshell'bcp庫名.dbo.表名outc:\Temp.xls-c-q-S"servername"-U"sa"-P""'
參數:S是SQL服務器名;U是用戶;P是密碼
說明:還可以導出文本文件等多種格式
實例:EXECmaster..xp_cmdshell'bcpsaletesttmp.dbo.CusAccountoutc:\temp1.xls-c-q-S"pmserver"-U"sa"-P"sa"'
EXECmaster..xp_cmdshell'bcp"SELECTau_fname,au_lnameFROMpubs..authorsORDERBYau_lname"queryoutC:\authors.xls-c-Sservername-Usa-Ppassword'
在VB6中應用ADO導出EXCEL文件代碼:
DimcnAsNewADODB.Connection
cn.open"Driver={SQLServer};Server=WEBSVR;DataBase=WebMis;UID=sa;WD=123;"
cn.execute"master..xp_cmdshell'bcp"SELECTcol1,col2FROM庫名.dbo.表名"queryoutE:\DT.xls-c-Sservername-Usa-Ppassword'"
4、在SQLSERVER里往Excel插入數據:
insertintoOpenDataSource('Microsoft.Jet.OLEDB.4.0','DataSource="c:\Temp.xls";UserID=Admin;Password=;Extendedproperties=Excel5.0')...table1(A1,A2,A3)values(1,2,3)
T-SQL代碼:
INSERTINTO
OPENDATASOURCE('Microsoft.JET.OLEDB.4.0','ExtendedProperties=Excel8.0;Datasource=C:\training\inventur.xls')...[Filiale1$](bestand,produkt)VALUES(20,'Test')
總結:利用以上語句,我們可以方便地將SQLSERVER、ACCESS和EXCEL電子表格軟件中的數據進行轉換,為我們提供了極大方便!(微軟中國社區)