熟悉SQLSERVER2000的數(shù)據(jù)庫(kù)管理員都知道,其DTS可以進(jìn)行數(shù)據(jù)的導(dǎo)入導(dǎo)出,其實(shí),我們也可以使用Transact-SQL語(yǔ)句進(jìn)行導(dǎo)入導(dǎo)出操作。在Transact-SQL語(yǔ)句中,我們主要使用OpenDataSource函數(shù)、OPENROWSET函數(shù),關(guān)于函數(shù)的詳細(xì)說(shuō)明,請(qǐng)參考SQL聯(lián)機(jī)幫助。利用下述方法,可以十分容易地實(shí)現(xiàn)SQLSERVER、ACCESS、EXCEL數(shù)據(jù)轉(zhuǎn)換,詳細(xì)說(shuō)明如下:
一、SQLSERVER和ACCESS的數(shù)據(jù)導(dǎo)入導(dǎo)出
常規(guī)的數(shù)據(jù)導(dǎo)入導(dǎo)出:
使用DTS向?qū)нw移你的Access數(shù)據(jù)到SQLServer,你可以使用這些步驟:
○1在SQLSERVER企業(yè)管理器中的Tools(工具)菜單上,選擇DataTransformation
○2Services(數(shù)據(jù)轉(zhuǎn)換服務(wù)),然后選擇czdImportData(導(dǎo)入數(shù)據(jù))。
○3在ChooseaDataSource(選擇數(shù)據(jù)源)對(duì)話框中選擇MicrosoftAccessastheSource,然后鍵入你的.mdb數(shù)據(jù)庫(kù)(.mdb文件擴(kuò)展名)的文件名或通過(guò)瀏覽尋找該文件。
○4在ChooseaDestination(選擇目標(biāo))對(duì)話框中,選擇MicrosoftOLE DBProviderforSQL Server,選擇數(shù)據(jù)庫(kù)服務(wù)器,然后單擊必要的驗(yàn)證方式。
○5在SpecifyTableCopy(指定表格復(fù)制)或Query(查詢)對(duì)話框中,單擊Copytables(復(fù)制表格)。
○6在SelectSourceTables(選擇源表格)對(duì)話框中,單擊SelectAll(全部選定)。下一步,完成。
Transact-SQL語(yǔ)句進(jìn)行導(dǎo)入導(dǎo)出:
1.在SQLSERVER里查詢access數(shù)據(jù):
SELECT*FROMOpenDataSource('Microsoft.Jet.OLEDB.4.0','DataSource="c:\DB.mdb";UserID=Admin;Password=')...表名
2.將access導(dǎo)入SQLserver
在SQLSERVER里運(yùn)行:
SELECT*INTOnewtableFROMOPENDATASOURCE('Microsoft.Jet.OLEDB.4.0','DataSource="c:\DB.mdb";UserID=Admin;Password=')...表名
3.將SQLSERVER表里的數(shù)據(jù)插入到Access表中
在SQLSERVER里運(yùn)行:
insertintoOpenDataSource('Microsoft.Jet.OLEDB.4.0','DataSource="c:\DB.mdb";UserID=Admin;Password=')...表名(列名1,列名2)select列名1,列名2fromsql表
實(shí)例:
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的數(shù)據(jù)導(dǎo)入導(dǎo)出
1、在SQLSERVER里查詢Excel數(shù)據(jù):
SELECT*FROMOpenDataSource('Microsoft.Jet.OLEDB.4.0','DataSource="c:\book1.xls";UserID=Admin;Password=;Extendedproperties=Excel5.0')...[Sheet1$]
下面是個(gè)查詢的示例,它通過(guò)用于Jet的OLEDB提供程序查詢Excel電子表格。
SELECT*FROMOpenDataSource('Microsoft.Jet.OLEDB.4.0','DataSource="c:\Finance\account.xls";UserID=Admin;Password=;Extendedproperties=Excel5.0')...xactions
2、將Excel的數(shù)據(jù)導(dǎo)入SQLserver:
SELECT*intonewtableFROMOpenDataSource('Microsoft.Jet.OLEDB.4.0','DataSource="c:\book1.xls";UserID=Admin;Password=;Extendedproperties=Excel5.0')...[Sheet1$]
實(shí)例:
SELECT*intonewtableFROMOpenDataSource('Microsoft.Jet.OLEDB.4.0','DataSource="c:\Finance\account.xls";UserID=Admin;Password=;Extendedproperties=Excel5.0')...xactions
3、將SQLSERVER中查詢到的數(shù)據(jù)導(dǎo)成一個(gè)Excel文件
T-SQL代碼:
EXECmaster..xp_cmdshell'bcp庫(kù)名.dbo.表名outc:\Temp.xls-c-q-S"servername"-U"sa"-P""'
參數(shù):S是SQL服務(wù)器名;U是用戶;P是密碼
說(shuō)明:還可以導(dǎo)出文本文件等多種格式
實(shí)例: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中應(yīng)用ADO導(dǎo)出EXCEL文件代碼:
DimcnAsNewADODB.Connection
cn.open"Driver={SQLServer};Server=WEBSVR;DataBase=WebMis;UID=sa;WD=123;"
cn.execute"master..xp_cmdshell'bcp"SELECTcol1,col2FROM庫(kù)名.dbo.表名"queryoutE:\DT.xls-c-Sservername-Usa-Ppassword'"
4、在SQLSERVER里往Excel插入數(shù)據(jù):
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')
總結(jié):利用以上語(yǔ)句,我們可以方便地將SQLSERVER、ACCESS和EXCEL電子表格軟件中的數(shù)據(jù)進(jìn)行轉(zhuǎn)換,為我們提供了極大方便!(微軟中國(guó)社區(qū))