本站小編為你精心準(zhǔn)備了網(wǎng)頁數(shù)據(jù)庫數(shù)據(jù)導(dǎo)入?yún)⒖挤段?,愿這些范文能點(diǎn)燃您思維的火花,激發(fā)您的寫作靈感。歡迎深入閱讀并收藏。
1SQLServer2000常用的數(shù)據(jù)導(dǎo)入導(dǎo)出方法
1.1通過DTS的設(shè)計(jì)器進(jìn)行導(dǎo)入或?qū)С?/p>
DTS的設(shè)計(jì)器功能強(qiáng)大,支持多任務(wù),也是可視化界面,易于操作,但熟悉的人一般不多,如果只是進(jìn)行SQLServer數(shù)據(jù)庫中部分表的移動(dòng),用這種方法最好,當(dāng)然,也可以進(jìn)行全部表的移動(dòng)。在SQLServerEnterpriseManager中,展開服務(wù)器左邊的+,選擇數(shù)據(jù)庫,右擊,選擇Alltasks/ImportData...(或Alltasks/ExportData...),進(jìn)入向?qū)J剑缓蟀凑仗崾疽徊揭徊竭M(jìn)行就可以了,里面分得非常詳細(xì),可以靈活的在不同數(shù)據(jù)源之間復(fù)制數(shù)據(jù),非常的方便,而且還可以另存成DTS包,如果以后還有相同的復(fù)制任務(wù),直接運(yùn)行DTS包就行,省時(shí)省力。也可以直接打開DTS設(shè)計(jì)器,方法是展開服務(wù)器名稱下面的DataTransformationServices,選LocalPackages,在右邊的窗口中右擊,選NewPackage,就打開了DTS設(shè)計(jì)器。值得注意的是:如果源數(shù)據(jù)庫要拷貝的表有外鍵,注意移動(dòng)的順序,有時(shí)要分批移動(dòng),否則外鍵主鍵,索引可能丟失,移動(dòng)的時(shí)候選項(xiàng)旁邊的提示說的很明白,或者一次性的復(fù)制到目標(biāo)數(shù)據(jù)庫中,再重新建立外鍵,主鍵,索引。其實(shí)在建立數(shù)據(jù)庫時(shí),建立外鍵,主鍵,索引的文件應(yīng)該和建表文件分開,而且用的數(shù)據(jù)文件也分開,并分別放在不同的驅(qū)動(dòng)器上,有利于數(shù)據(jù)庫的優(yōu)化。
1.2利用Bcp工具
這種工具雖然在SQLServer2000的版本中不推薦使用,但許多數(shù)據(jù)庫管理員仍很喜歡用它,尤其是用過SQLServer早期版本的人。不過Bcp確實(shí)有其局限性,首先它的界面不是圖形化的;其次它只是在SQLServer的表(視圖)與文本文件之間進(jìn)行復(fù)制。但是另一方面,它也有其優(yōu)點(diǎn):性能好,開銷小,占用內(nèi)存少,速度快。
1.3利用備份和恢復(fù)
先對(duì)源數(shù)據(jù)庫進(jìn)行完全備份,備份到一個(gè)設(shè)備(device)上,然后把備份文件復(fù)制到目的服務(wù)器上(恢復(fù)的速度快),進(jìn)行數(shù)據(jù)庫的恢復(fù)操作,在恢復(fù)的數(shù)據(jù)庫名中填上源數(shù)據(jù)庫的名字(名字必須相同),選擇強(qiáng)制型恢復(fù)(可以覆蓋以前數(shù)據(jù)庫的選項(xiàng)),在選擇從設(shè)備中進(jìn)行恢復(fù),瀏覽時(shí)選中備份的文件就行了。這種方法可以完全恢復(fù)數(shù)據(jù)庫,包括外鍵,主鍵,索引。
1.4直接拷貝數(shù)據(jù)文件
把數(shù)據(jù)庫的數(shù)據(jù)文件(*.mdf)和日志文件(*.ldf)都拷貝到目的服務(wù)器,在SQLServerQueryAnalyzer中用語句進(jìn)行恢復(fù):
EXECsp_attach_db@dbname=’test’,
@filename1=’d:\mssql7\data\test_data.mdf’,
@filename2=’d:\mssql7\data\test_log.ldf’
這樣就把test數(shù)據(jù)庫附加到SQLServer中,可以照常使用,如果不想用原來的日志文件,可以用如下的命令:
EXECsp_detach_db@dbname=’test’
EXECsp_attach_single_file_db@dbname=’test’,
@physname=’d:\mssql7\data\test_data.mdf’
這個(gè)語句的作用是僅僅加載數(shù)據(jù)文件,日志文件可以由SQLServer數(shù)據(jù)庫自動(dòng)添加,但是原來的日志文件中記錄的數(shù)據(jù)就丟失了。
1.5在應(yīng)用程序中定制
可以在應(yīng)用程序(PB、VB)中執(zhí)行自己編寫的程序,也可以在QueryAnalyzer中執(zhí)行,這種方法比較靈活,其實(shí)是利用一個(gè)平臺(tái)連接到數(shù)據(jù)庫,在平臺(tái)中用的主要是SQL語句,這種方法對(duì)數(shù)據(jù)庫的影響小,但是如果用到遠(yuǎn)程鏈接服務(wù)器,要求網(wǎng)絡(luò)之間的傳輸性能好,一般有兩種語句:
1.5.1select...intonew_brnamewhere...
1.5.2insert(into)old_brnameselect...from...where...
這兩種方式的區(qū)別是前者把數(shù)據(jù)插入一個(gè)新表(先建立表,再插入數(shù)據(jù)),而后者是把數(shù)據(jù)插入已經(jīng)存在的一個(gè)表中,一般來說,第二條語句強(qiáng)于前者。
1.6SQLServer的復(fù)制功能
SQLServer提供了強(qiáng)大的數(shù)據(jù)復(fù)制功能,也是最不易掌握的,具體應(yīng)用請(qǐng)參考相關(guān)資料,值得注意的是要想成功進(jìn)行數(shù)據(jù)的復(fù)制工作,有些條件是必不可少的:
1.6.1SQLServerAgent必須啟動(dòng),MSDTC必須啟動(dòng)。
1.6.2所有要復(fù)制的表必須有主鍵。
1.6.3如果表中有text或image數(shù)據(jù)類型,必須使用withlog選項(xiàng),不能使用withno_log選項(xiàng)。
另外maxtextreplsize選項(xiàng)控制可以復(fù)制的文本和圖像數(shù)據(jù)的最大規(guī)模,超過這個(gè)限制的操作將失敗。
1.6.4在要進(jìn)行復(fù)制的計(jì)算機(jī)上,應(yīng)該至少是隱含共享,即共享名是C$或D$…。
1.6.5為SQLServer使用的WindowsNT賬號(hào)不能是一個(gè)本地的系統(tǒng)賬號(hào),因?yàn)楸镜氐南到y(tǒng)賬號(hào)不允許網(wǎng)絡(luò)存取。
1.6.6如果參與復(fù)制的服務(wù)器在另外的計(jì)算機(jī)域中,必須在這些域之間建立信任關(guān)系。
2實(shí)現(xiàn)基于網(wǎng)頁的數(shù)據(jù)庫數(shù)據(jù)導(dǎo)入
那么,如何實(shí)現(xiàn)基于網(wǎng)頁的數(shù)據(jù)庫數(shù)據(jù)導(dǎo)入呢,下面利用一個(gè)比較簡單的網(wǎng)絡(luò)介紹一下。
假設(shè)某局域網(wǎng)的網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)如下所示:
其中服務(wù)器A和工作站B位于局域網(wǎng)內(nèi),工作站C與服務(wù)器D位于Internet內(nèi),局域網(wǎng)與Internet是物理隔離的,工作站C與工作站D在同一個(gè)辦公室內(nèi),服務(wù)器A上的數(shù)據(jù)庫管理系統(tǒng)是Oracle,服務(wù)器D上的數(shù)據(jù)庫管理系統(tǒng)是SQLServer2000。由于工作需要,要求把服務(wù)器A的有關(guān)數(shù)據(jù)導(dǎo)入到服務(wù)器D上。
2.1通常的工作流程:
2.1.1在工作站B上運(yùn)行客戶端軟件,將服務(wù)器A上數(shù)據(jù)導(dǎo)入到本地的dbf文件。
2.1.2用移動(dòng)硬盤把dbf文件從工作站B拷貝到工作站C上。
2.1.3在工作站C上,用ftp軟件將dbf文件上傳到服務(wù)器D上。
2.1.4在工作站C上,運(yùn)行遠(yuǎn)程桌面軟件登錄到服務(wù)器D上。
2.1.5在服務(wù)器D上,執(zhí)行DTS,將dbf文件中的數(shù)據(jù)導(dǎo)入到SQLServer
數(shù)據(jù)庫。
2.1.6在服務(wù)器D上,運(yùn)行相關(guān)存儲(chǔ)過程,做數(shù)據(jù)的后期處理工作。
在許多情況下,因?yàn)楦鞣N不同情況的需要,這個(gè)工作流程每天(甚至更短的時(shí)間內(nèi))就要執(zhí)行一次,非常繁瑣,而且使用手工操作,很容易出錯(cuò)。下面提出一種改進(jìn)的方案。
2.2改進(jìn)后的工作流程
2.2.1在工作站B上運(yùn)行客戶端軟件,將服務(wù)器A上數(shù)據(jù)導(dǎo)入到本地的dbf文件。
2.2.2用移動(dòng)硬盤把dbf文件從工作站B拷貝到工作站C上。
2.2.3在工作站C上,打開服務(wù)器D上的相關(guān)網(wǎng)頁,利用網(wǎng)頁將dbf文件的數(shù)據(jù)導(dǎo)入到服務(wù)器D上的SQLServer數(shù)據(jù)庫中。
首先,要在網(wǎng)頁里實(shí)現(xiàn)上傳功能,把dbf文件從工作站C上傳到服務(wù)D上,這里就不多介紹了。要通過網(wǎng)頁把dbf文件導(dǎo)入到SQLServer中,需要借助DTS可編程對(duì)象。DTS包含一組可編程COM對(duì)象,主要包含:DTS.Package、DTS.Connection、DTS.Step、DTS.ExecuteSQLTask、DTS.DataPumpTask、DTS.Transformation。
在ASP網(wǎng)頁里,通過用VBScript腳本創(chuàng)建調(diào)用DTS可編程COM對(duì)象,可以完成數(shù)據(jù)導(dǎo)入任務(wù)。SQLServer2000有比較詳細(xì)的文檔資料介紹DTS編程,但沒有給一個(gè)具體的例子,如果僅參考文檔資料,難度比較大,開發(fā)時(shí)間也會(huì)相當(dāng)長。這里大概的介紹一下開發(fā)程序的過程。首先,在SQLSever2000的DTS設(shè)計(jì)器里,創(chuàng)建DTS包,實(shí)現(xiàn)從dbf文件到SQLServer2000的數(shù)據(jù)導(dǎo)入,把后期處理的存儲(chǔ)過程也添加到DTS包里。將這個(gè)DTS包另存為VBScript文件。有了這個(gè)VBScript文件,開發(fā)程序就容易多了,加入所需要的其他代碼,就可以在網(wǎng)頁里實(shí)現(xiàn)數(shù)據(jù)庫的數(shù)據(jù)導(dǎo)入。