欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

實(shí)現(xiàn)不同平臺間信息網(wǎng)站移植的方法

文檔序號:6517210閱讀:256來源:國知局

專利名稱::實(shí)現(xiàn)不同平臺間信息網(wǎng)站移植的方法
技術(shù)領(lǐng)域
:本發(fā)明涉及信息網(wǎng)站技術(shù),特別是一種實(shí)現(xiàn)不同平臺間信息網(wǎng)站移植的方法,實(shí)現(xiàn)了不同平臺的信息網(wǎng)站之間的自動轉(zhuǎn)換,操作簡單。
背景技術(shù)
:目前信息網(wǎng)站(WEB服務(wù)器)已成為最廣泛和最基本的信息系統(tǒng)應(yīng)用模式,僅國內(nèi)的信息網(wǎng)站目前就有近百萬。信息站點(diǎn)的基本構(gòu)建組件是腳本語言和數(shù)據(jù)庫。微軟平臺信息站點(diǎn)構(gòu)建模式中應(yīng)用廣泛的腳本語言是HTML語言、ASP語言和JAVASCRIPT類語言,應(yīng)用廣泛的數(shù)據(jù)庫是ACCESS數(shù)據(jù)庫、MSSQL數(shù)據(jù)庫和ORACLE數(shù)據(jù)庫。根據(jù)IDC統(tǒng)計(jì)數(shù)據(jù)表明,90%以上的信息網(wǎng)站均基于微軟平臺實(shí)現(xiàn)。隨著公開源碼LINUX操作系統(tǒng)的發(fā)展和應(yīng)用的不斷推廣,基于LINUX構(gòu)建信息網(wǎng)站的需求將會越來越多,就存在一個(gè)從微軟平臺向LINUX平臺遷移信息網(wǎng)站的問題。如果解決方案是讓開發(fā)人員重新基于LINUX平臺設(shè)計(jì)開發(fā)網(wǎng)站,會帶來很大的費(fèi)用和較長的周期,因此迫切需要相關(guān)的自動化移植技術(shù),使用戶能夠在最短的時(shí)間內(nèi)、花最少的代價(jià),基于微軟平臺構(gòu)建的網(wǎng)站移植到LINUX平臺上。ASP語言、ACCESS數(shù)據(jù)庫和SQLSERVER數(shù)據(jù)庫都是微軟平臺上關(guān)鍵組件,在基于微軟平臺開發(fā)的信息網(wǎng)站中應(yīng)用最為廣泛。同時(shí)這些關(guān)鍵組件的使用需要微軟的操作系統(tǒng)和IIS(InternetInformationServer)等一系列商業(yè)軟件的支持,并且無法直接在LINUX系統(tǒng)平臺上運(yùn)行,可移植性差。因此如何將這些組件及其應(yīng)用將移植到LINUX平臺運(yùn)行就成為了一個(gè)問題。由于PHP是在LINUX平臺上建立信息網(wǎng)站應(yīng)用最為廣泛的腳本語言,因此將ASP轉(zhuǎn)換成為PHP是信息網(wǎng)站移植最為根本的解決模式。對于ASP腳本在LINUX平臺上運(yùn)行,國際上主要采取了基于仿真器的方式,即在非NT的操作系統(tǒng)中通過實(shí)現(xiàn)仿真層提供對ASP腳本語言的支持,用戶不需要直接進(jìn)行腳本語言的轉(zhuǎn)換工作,Sun公司的SUNONEActiveServerPages就可以實(shí)現(xiàn)這種功能。另外在LINUX公開源碼環(huán)境中,也存在ASP到PHP的腳本翻譯器。然而基于基于仿真器的方式實(shí)現(xiàn)ASP腳本在LINUX平臺運(yùn)行的模式,由于ASP腳本存在多種多樣的COM、ActiveX組件,仿真方式存在效率低、兼容性差的問題;同時(shí)對每一個(gè)LINUX信息站點(diǎn)都需要購買一個(gè)商用SUNONEActiveServerPages,費(fèi)用高,失去了LINUX平臺價(jià)格性能比的優(yōu)勢;在LINUX公開源碼環(huán)境中的ASP到PHP的腳本翻譯器僅僅能實(shí)現(xiàn)簡單語法對應(yīng)的轉(zhuǎn)換,同時(shí)由于沒有考慮WINDOWS平臺和LINUX平臺在字符處理、數(shù)據(jù)庫訪問、C語言編程等方面的差異,也無法實(shí)用。同時(shí)由于ASP存在第三方大量開發(fā)的基于Windows的組件技術(shù)的ActiveX/COM對象,包括從簡單的GUI(GraphicUserInterface)控制到復(fù)雜的商業(yè)應(yīng)用邏輯組件,上述產(chǎn)品在支持ActiveX/COM組件方面均不完善,且極其昂貴。Windows/管理工具/數(shù)據(jù)源實(shí)現(xiàn)的數(shù)據(jù)庫移植轉(zhuǎn)換功能,同時(shí)目前在LINUX公開源碼環(huán)境存在的ACCESS數(shù)據(jù)庫到MYSQL數(shù)據(jù)庫轉(zhuǎn)換工具,基本采取了數(shù)據(jù)庫表、字段及數(shù)據(jù)的導(dǎo)入導(dǎo)出模式,不具備對原始數(shù)據(jù)庫的表、字段、內(nèi)容到目標(biāo)數(shù)據(jù)庫表、字段以及內(nèi)容的用戶歸整能力,如不能根據(jù)用戶要求處理大小寫的變化、字段名的變化、表名的變化、漢字的支持等情況,因此無法適應(yīng)網(wǎng)站自動移植到LINUX平臺時(shí)數(shù)據(jù)庫自動化轉(zhuǎn)換的實(shí)際應(yīng)用。同時(shí)信息網(wǎng)站構(gòu)建中用戶數(shù)據(jù)庫應(yīng)用,如庫、表、字段的訪問查詢與網(wǎng)站腳本編程應(yīng)該密切關(guān)聯(lián),因此在移植過程中對這種關(guān)聯(lián)關(guān)系的處理很需要,對基于微軟平臺構(gòu)建的信息網(wǎng)站自動移植到LINUX平臺上的完整解決方案,目前也還沒有相關(guān)的技術(shù)方案可以實(shí)現(xiàn)這種轉(zhuǎn)換。上述已有的相關(guān)移植技術(shù)中,數(shù)據(jù)庫轉(zhuǎn)換和腳本轉(zhuǎn)換是兩個(gè)彼此獨(dú)立的轉(zhuǎn)換技術(shù),沒有將用戶數(shù)據(jù)庫移植與網(wǎng)站腳本代碼移植關(guān)聯(lián)到一起,不僅用戶界面不統(tǒng)一,而且是在不同的平臺上,如數(shù)據(jù)庫轉(zhuǎn)換工具是Windows上平臺上的應(yīng)用程序,而腳本轉(zhuǎn)換工具是Linux平臺上的程序。利用上述相關(guān)技術(shù)對網(wǎng)站進(jìn)行移植,需要在不同的工具和平臺間進(jìn)行切換,由于用戶界面不統(tǒng)一,操作復(fù)雜煩瑣,容易出錯(cuò),因此無法滿足微軟平臺構(gòu)建的網(wǎng)站到LINUX平臺上自動移植實(shí)際需求。因此上述移植技術(shù)不具備對網(wǎng)站的實(shí)際應(yīng)用移植能力。
發(fā)明內(nèi)容本發(fā)明的目的在于提供一種實(shí)現(xiàn)不同平臺間信息網(wǎng)站移植的方法,解決不同平臺間信息網(wǎng)站的腳本和數(shù)據(jù)庫的轉(zhuǎn)換及關(guān)聯(lián)處理的問題,實(shí)現(xiàn)基于不同平臺的信息網(wǎng)站的自動化移植。為了實(shí)現(xiàn)上述目的,本發(fā)明提供了一種實(shí)現(xiàn)不同平臺間信息網(wǎng)站移植的方法,用于將微軟平臺下的第一信息網(wǎng)站轉(zhuǎn)換成為LINUX平臺下的第二信息網(wǎng)站,所述第一信息網(wǎng)站包括支持ODBC的第一數(shù)據(jù)庫和第一腳本,所述第二信息網(wǎng)站包括支持ODBC的第二數(shù)據(jù)庫和第二腳本,其中,包括以下步驟步驟S1一數(shù)據(jù)庫轉(zhuǎn)換模塊將所述第一數(shù)據(jù)庫轉(zhuǎn)換為所述第二數(shù)據(jù)庫,同時(shí)實(shí)現(xiàn)對數(shù)據(jù)庫轉(zhuǎn)換的庫表結(jié)構(gòu)的關(guān)聯(lián)處理和兩個(gè)數(shù)據(jù)庫對應(yīng)字段數(shù)據(jù)類型的轉(zhuǎn)換;步驟S2一數(shù)據(jù)庫轉(zhuǎn)換映射表保存數(shù)據(jù)庫轉(zhuǎn)換關(guān)聯(lián)處理中庫表結(jié)構(gòu)的改變和字段數(shù)據(jù)類型的變化;步驟S3一腳本轉(zhuǎn)換模塊將所述第一腳本轉(zhuǎn)換為所述第二腳本;步驟S4一數(shù)據(jù)庫訪問對象模塊根據(jù)所述數(shù)據(jù)庫轉(zhuǎn)換映射表實(shí)現(xiàn)對腳本轉(zhuǎn)換的關(guān)聯(lián)處理。上述的實(shí)現(xiàn)不同平臺間信息網(wǎng)站移植的方法,其中,所述第一平臺為微軟平臺,所述第二平臺為LINUX平臺。上述的實(shí)現(xiàn)不同平臺間信息網(wǎng)站移植的方法,其中,所述的數(shù)據(jù)庫轉(zhuǎn)換的關(guān)聯(lián)處理包括庫表結(jié)構(gòu)的無歧義處理、中英文轉(zhuǎn)換和大小寫轉(zhuǎn)換。上述的實(shí)現(xiàn)不同平臺間信息網(wǎng)站移植的方法,其中,庫表結(jié)構(gòu)的無歧異處理將所述第二數(shù)據(jù)庫中與關(guān)鍵字沖突的庫、表和字段進(jìn)行重命名;中英文轉(zhuǎn)換將所述第二數(shù)據(jù)庫中的中文表名和字段名轉(zhuǎn)換為英文的表名和字段名;大小寫轉(zhuǎn)換將所述第二數(shù)據(jù)庫中的表名和字段名改為小寫。上述的實(shí)現(xiàn)不同平臺間信息網(wǎng)站移植的方法,其中,實(shí)現(xiàn)對腳本轉(zhuǎn)換的關(guān)聯(lián)處理步驟是所述數(shù)據(jù)庫訪問對象模塊接收所述第二腳本傳遞的要執(zhí)行所述第二數(shù)據(jù)庫的SQL語句,并根據(jù)所述數(shù)據(jù)庫轉(zhuǎn)換映射表修改所述SQL語句中的數(shù)據(jù)表和字段。上述的實(shí)現(xiàn)不同平臺間信息網(wǎng)站移植的方法,其中,實(shí)現(xiàn)對腳本轉(zhuǎn)換的關(guān)聯(lián)處理步驟是所述數(shù)據(jù)庫訪問對象模塊根據(jù)所述數(shù)據(jù)庫轉(zhuǎn)換映射表對所述第二腳本中對所述第二數(shù)據(jù)庫進(jìn)行操作的SQL語句中的數(shù)據(jù)表和字段。上述的實(shí)現(xiàn)不同平臺間信息網(wǎng)站移植的方法,其中,所述數(shù)據(jù)庫轉(zhuǎn)換模塊包括連接源數(shù)據(jù)庫模塊、數(shù)據(jù)轉(zhuǎn)換模塊和連接目的數(shù)據(jù)庫模塊,所述步驟S1又包括以下步驟步驟S11連接源數(shù)據(jù)庫模塊通過ODBC與源數(shù)據(jù)庫的連接;步驟S12數(shù)據(jù)轉(zhuǎn)換模塊創(chuàng)建用于所述第二數(shù)據(jù)庫的庫表結(jié)構(gòu)、完成所述第一數(shù)據(jù)庫中數(shù)據(jù)的轉(zhuǎn)換、并完成對數(shù)據(jù)庫轉(zhuǎn)換的庫表結(jié)構(gòu)的關(guān)聯(lián)處理;步驟S13連接目的數(shù)據(jù)庫模塊通過ODBC將轉(zhuǎn)換后的所述第一數(shù)據(jù)庫保存為所述第二數(shù)據(jù)庫。上述的實(shí)現(xiàn)不同平臺間信息網(wǎng)站移植的方法,其中,所述第一數(shù)據(jù)庫為Access數(shù)據(jù)庫、MsSQLSERVER數(shù)據(jù)庫,所述第二數(shù)據(jù)庫為MySQL數(shù)據(jù)庫。上述的實(shí)現(xiàn)不同平臺間信息網(wǎng)站移植的方法,其中,所述第一腳本和第二腳本分別為ASP腳本和PHP腳本,所述步驟S3又包括以下步驟步驟S311讀取所述第一腳本并進(jìn)行預(yù)處理;步驟S312進(jìn)行第一次掃描,處理存在的DTC控件和函數(shù)聲明中的函數(shù)名;步驟S313紀(jì)錄需要預(yù)先聲明的函數(shù)或變量名到相應(yīng)變量表;步驟S314輸出所述步驟S32中得到的DTC代碼到所述第二腳本;步驟S315編譯并轉(zhuǎn)換Jscript或VBScript代碼的所述第一腳本。上述的實(shí)現(xiàn)不同平臺間信息網(wǎng)站移植的方法,其中,所述的預(yù)處理包括檢查第一腳本文件、目錄和第二腳本文件、目錄的有效性、打開文件或目錄、設(shè)置所有的外部全局變量并初始化腳本轉(zhuǎn)換模塊。上述的實(shí)現(xiàn)不同平臺間信息網(wǎng)站移植的方法,其中,所述步驟S311到315之間還包括步驟S316所述第二腳本中如包括grabglobals.inc和mysql_class.inc,則在所述第二腳本中生成相應(yīng)的PHP的require語句。上述的實(shí)現(xiàn)不同平臺間信息網(wǎng)站移植的方法,其中,變量符號表保存腳本轉(zhuǎn)換模塊程序找到的變量名、函數(shù)名及類型的信息;程序結(jié)構(gòu)控制堆棧保存由多條語句組成的嵌套結(jié)構(gòu);內(nèi)存管理模塊對內(nèi)存分配接口和可分配的內(nèi)存空間進(jìn)行統(tǒng)一管理,并建立內(nèi)存分配池;錯(cuò)誤恢復(fù)模塊對發(fā)現(xiàn)的錯(cuò)誤,給出合適的診斷信息并繼續(xù)處理。本發(fā)明的一種實(shí)現(xiàn)不同平臺間信息網(wǎng)站移植的方法解決了微軟平臺ASP(ActiveServerPage)腳本到LINUX平臺PHP(PHPHypertextPreprosessor)腳本的自動轉(zhuǎn)換、微軟平臺ACCESS、MSSQLSERVER等數(shù)據(jù)庫到LINUX平臺MYSQL數(shù)據(jù)庫的自動轉(zhuǎn)換以及腳本轉(zhuǎn)換與數(shù)據(jù)庫轉(zhuǎn)換的關(guān)聯(lián)處理等關(guān)鍵問題,可以實(shí)現(xiàn)基于微軟系統(tǒng)的信息網(wǎng)站到LINUX系統(tǒng)的自動化移植。該技術(shù)對我國LINUX操作系統(tǒng)的應(yīng)用將會起到極大的促進(jìn)作用。下面結(jié)合附圖和實(shí)施例對本發(fā)明進(jìn)行詳細(xì)說明。圖1為本發(fā)明網(wǎng)站移植方法的實(shí)現(xiàn)流程圖;圖2為本發(fā)明數(shù)據(jù)庫轉(zhuǎn)換的實(shí)現(xiàn)流程圖;圖3為本發(fā)明腳本轉(zhuǎn)換模塊結(jié)構(gòu)示意圖;圖4為本發(fā)明腳本轉(zhuǎn)換的實(shí)現(xiàn)流程圖;圖5為本發(fā)明的不同平臺間信息網(wǎng)站移植整體結(jié)構(gòu)示意圖;具體實(shí)施方式實(shí)現(xiàn)不同平臺間信息網(wǎng)站移植的方法,用于將微軟平臺下的第一信息網(wǎng)站轉(zhuǎn)換成為LINUX平臺下的第二信息網(wǎng)站,所述第一信息網(wǎng)站包括支持ODBC的第一數(shù)據(jù)庫和第一腳本,所述第二信息網(wǎng)站包括支持ODBC的第二數(shù)據(jù)庫和第二腳本。本發(fā)明的實(shí)施例中,第一數(shù)據(jù)庫為只支持微軟平臺的支持ODBC數(shù)據(jù)庫,可以是Access數(shù)據(jù)庫、MsSQLSERVER數(shù)據(jù)庫等,所述第二數(shù)據(jù)庫為MySQL數(shù)據(jù)庫。第一腳本為ASP腳本,而第二腳本為PHP腳本。開放式數(shù)據(jù)庫互連(OpenDataBaseConnectivity,簡稱ODBC)是一種用來在相關(guān)或不相關(guān)的數(shù)據(jù)庫管理系統(tǒng)中存取數(shù)據(jù)的標(biāo)準(zhǔn)應(yīng)用程序接口(API)。ODBC為應(yīng)用程序提供了一套高層調(diào)用接口規(guī)范和基于動態(tài)鏈接庫的運(yùn)行支持環(huán)境。本發(fā)明的實(shí)現(xiàn)不同平臺間信息網(wǎng)站移植的方法的數(shù)據(jù)庫自動轉(zhuǎn)換功能可實(shí)現(xiàn)將任一種支持ODBC的數(shù)據(jù)庫轉(zhuǎn)換成另一種支持ODBC的數(shù)據(jù)庫。腳本自動轉(zhuǎn)換功能將ASP中對數(shù)據(jù)庫的操作轉(zhuǎn)換成相應(yīng)的PHP中對MySQL數(shù)據(jù)庫的操作支持;提供對ASP中的內(nèi)置對象和文件操作對象的轉(zhuǎn)換支持;提供對使用MicrosoftVisualInterDev開發(fā)的Design-timeControl對象的轉(zhuǎn)換支持;并提供多數(shù)據(jù)庫操作預(yù)處理、腳本格式歸整預(yù)處理支持等擴(kuò)展能力。在轉(zhuǎn)換過程中必須根據(jù)數(shù)據(jù)庫轉(zhuǎn)換過程中生成的數(shù)據(jù)庫轉(zhuǎn)換映射表來處理腳本中的SQL語句。用戶最后可以將轉(zhuǎn)換的結(jié)果自動上傳到用戶指定的發(fā)布服務(wù)器,用戶用瀏覽器就可以很方便的查看到轉(zhuǎn)換之后的信息站點(diǎn)。下面對本發(fā)明的實(shí)現(xiàn)不同平臺間信息網(wǎng)站移植的方法進(jìn)行詳細(xì)描述。如圖1所示,本發(fā)明的實(shí)現(xiàn)不同平臺間信息網(wǎng)站移植的方法包括以下步驟步驟S1數(shù)據(jù)庫轉(zhuǎn)換模塊將第一數(shù)據(jù)庫轉(zhuǎn)換為第二數(shù)據(jù)庫,即MySQL數(shù)據(jù)庫,同時(shí)實(shí)現(xiàn)對數(shù)據(jù)庫轉(zhuǎn)換的庫表結(jié)構(gòu)的關(guān)聯(lián)處理和兩個(gè)數(shù)據(jù)庫對應(yīng)字段數(shù)據(jù)類型的轉(zhuǎn)換;步驟S2一數(shù)據(jù)庫轉(zhuǎn)換映射表保存數(shù)據(jù)庫轉(zhuǎn)換關(guān)聯(lián)處理中庫表結(jié)構(gòu)的改變和字段數(shù)據(jù)類型的變化;步驟S3一腳本轉(zhuǎn)換模塊將第一腳本轉(zhuǎn)換為第二腳本;步驟S4一數(shù)據(jù)庫訪問對象模塊根據(jù)所述數(shù)據(jù)庫轉(zhuǎn)換映射表實(shí)現(xiàn)對腳本轉(zhuǎn)換的關(guān)聯(lián)處理。在步驟S1的數(shù)據(jù)庫轉(zhuǎn)換過程中會進(jìn)行以下幾方面的關(guān)聯(lián)處理數(shù)據(jù)表或字段的名字的大小寫轉(zhuǎn)換SQL語句在微軟平臺環(huán)境中不存在對數(shù)據(jù)庫表字段大小寫的要求,但是LINUX平臺的MySQL數(shù)據(jù)庫需要區(qū)分。第一信息網(wǎng)站的建設(shè)中普遍采用的Access數(shù)據(jù)庫,對于數(shù)據(jù)表和字段的名字不區(qū)分大小寫,因此第一信息網(wǎng)站的數(shù)據(jù)庫SQL語句中會有很多大小寫不一致的地方。Linux平臺上普遍使用的MySQL數(shù)據(jù)庫對于數(shù)據(jù)表和字段的名字是區(qū)分大小寫的。對該問題關(guān)聯(lián)處理方法是檢查第一數(shù)據(jù)庫,發(fā)現(xiàn)可能存在大小寫歧義的數(shù)據(jù)表或字段的名字,將轉(zhuǎn)換后的MySQL數(shù)據(jù)庫(即第二數(shù)據(jù)庫)中數(shù)據(jù)表和字段的名字一律改為小寫,之間的對應(yīng)關(guān)系作為映射表的一部分也保存在數(shù)據(jù)庫轉(zhuǎn)換映射表中;數(shù)據(jù)表或字段的名字的無歧義處理Windows環(huán)境下定義數(shù)據(jù)表和字段,轉(zhuǎn)換到MySQL數(shù)據(jù)庫環(huán)境下可能會引起關(guān)鍵字的沖突。對上述問題關(guān)聯(lián)處理方法是在數(shù)據(jù)庫轉(zhuǎn)換前由轉(zhuǎn)換程序檢查第一數(shù)據(jù)庫,發(fā)現(xiàn)可能會引起關(guān)鍵字沖突的數(shù)據(jù)表或字段的名字,則為該數(shù)據(jù)表或字段選擇新的可以避免關(guān)鍵字沖突的名字來替代,原來的名字和選擇的替代名字之間的對應(yīng)關(guān)系作為映射表的一部分也保存在數(shù)據(jù)庫轉(zhuǎn)換映射表中;如ACCESS數(shù)據(jù)庫(第一數(shù)據(jù)庫)中包含兩個(gè)數(shù)據(jù)表,一個(gè)表的名字為use,表中包含兩個(gè)字段,字段的名字分別為char和int;另一個(gè)表的名字為select,表中包含兩個(gè)字段,字段的名字分別為update和insert,而這use、char、int、select、update、insert中有一個(gè)或多個(gè)是MySQL數(shù)據(jù)庫的關(guān)鍵字,這樣就需要對這幾個(gè)數(shù)據(jù)表和字段名進(jìn)行無歧義處理,無歧義處理過程中產(chǎn)生的映射表如下#tableuseusel#fieldcharcharl#fieldintintl#tableselectselectl#fieldupdateupdatel#filedinsertinsertl#end而無歧義處理后產(chǎn)生的無歧義數(shù)據(jù)庫(即第二數(shù)據(jù)庫)的中包括數(shù)據(jù)表usel包含charl和intl兩個(gè)字段;及數(shù)據(jù)表selectl包含updatel和insertl兩個(gè)字段。數(shù)據(jù)表或字段名字的中英轉(zhuǎn)換處理目前Linux平臺上MySQL數(shù)據(jù)庫對包含有中文表名和字段名的數(shù)據(jù)庫查詢和修改操作存在問題,會造成操作失敗或者操作結(jié)果的不正確。對上述問題關(guān)聯(lián)處理方法是在數(shù)據(jù)庫轉(zhuǎn)換時(shí)檢查第一數(shù)據(jù)庫,對原先中文表名和字段名用對應(yīng)的英文名字來替代,之間的對應(yīng)關(guān)系也保存在數(shù)據(jù)庫轉(zhuǎn)換映射表中。同時(shí),在不同數(shù)據(jù)庫系統(tǒng)除了定義了字符、數(shù)字、日期等通用字段數(shù)據(jù)類型,還定義了一些專有的字段數(shù)據(jù)類型,因此在進(jìn)行數(shù)據(jù)庫轉(zhuǎn)換時(shí),第一數(shù)據(jù)庫中存在專有的字段數(shù)據(jù)類型,需要用第二數(shù)據(jù)庫支持的字段數(shù)據(jù)類型重新定義。表1描述了源數(shù)據(jù)庫為Access,目的數(shù)據(jù)庫為MySQL的情況下,轉(zhuǎn)換程序進(jìn)行轉(zhuǎn)換時(shí)字段數(shù)據(jù)類型的對應(yīng)關(guān)系;而表格2則描述了源數(shù)據(jù)庫為SQLServer,目的數(shù)據(jù)庫為MySQL的情況。表1表2從表格1中可看到,布爾類型是Access的專有數(shù)據(jù)類型,在MySQL中不直接支持該類型,因此重新定義為字段長度為1個(gè)字符的字符類型。數(shù)據(jù)庫轉(zhuǎn)換過程中,轉(zhuǎn)換程序會分析第一數(shù)據(jù)庫表中的每一個(gè)字段,并根據(jù)字段數(shù)據(jù)類型的對應(yīng)關(guān)系進(jìn)行庫表結(jié)構(gòu)和數(shù)據(jù)內(nèi)容的導(dǎo)出導(dǎo)入。對于Access數(shù)據(jù)庫中出現(xiàn)的布爾類型字段,參照對應(yīng)關(guān)系后會在MySQL數(shù)據(jù)庫中建立字段長度為1個(gè)字符的字符類型,并且將布爾字段中的數(shù)據(jù)進(jìn)行相應(yīng)的轉(zhuǎn)換后保存在新建字段中。對于布爾類型,轉(zhuǎn)換的規(guī)則是布爾真值采用字符“T”代替,而布爾假值采用字符“F”代替。并將轉(zhuǎn)換的數(shù)據(jù)類型信息保存到數(shù)據(jù)庫轉(zhuǎn)換映射表。數(shù)據(jù)庫轉(zhuǎn)換模塊包括連接源數(shù)據(jù)庫模塊、數(shù)據(jù)轉(zhuǎn)換模塊和連接目的數(shù)據(jù)庫模塊,如圖2所示,步驟S1又包括以下步驟步驟S11連接源數(shù)據(jù)庫模塊通過ODBC與源數(shù)據(jù)庫的連接;步驟S12數(shù)據(jù)轉(zhuǎn)換模塊創(chuàng)建用于所述第二數(shù)據(jù)庫的庫表結(jié)構(gòu)、完成所述第一數(shù)據(jù)庫中數(shù)據(jù)的轉(zhuǎn)換、并完成對數(shù)據(jù)庫轉(zhuǎn)換的庫表結(jié)構(gòu)的關(guān)聯(lián)處理;步驟S13連接目的數(shù)據(jù)庫模塊通過ODBC將轉(zhuǎn)換后的第一數(shù)據(jù)庫保存為第二數(shù)據(jù)庫。數(shù)據(jù)轉(zhuǎn)換模塊主要由庫表結(jié)構(gòu)轉(zhuǎn)換、數(shù)據(jù)轉(zhuǎn)換兩個(gè)子模塊組成,主要完成新庫表結(jié)構(gòu)的創(chuàng)建和數(shù)據(jù)的轉(zhuǎn)換,這是數(shù)據(jù)庫轉(zhuǎn)換工具的核心部分。它主要完成從ACCESS、SQLServer到MySQl數(shù)據(jù)庫的庫表的創(chuàng)建,它的創(chuàng)建是在數(shù)據(jù)類型映射表的基礎(chǔ)上建立的。在建立過程中可以根據(jù)用戶自定義進(jìn)行解決數(shù)據(jù)表和字段名的無歧義轉(zhuǎn)換、大小寫轉(zhuǎn)換、中英文轉(zhuǎn)換等問題。數(shù)據(jù)轉(zhuǎn)換模塊還包括一目的數(shù)據(jù)庫檢查模塊,主要是通過該模塊能夠?qū)σ呀?jīng)轉(zhuǎn)換過的數(shù)據(jù)庫結(jié)構(gòu)能夠進(jìn)行簡單的瀏覽、查尋等。如圖3,腳本轉(zhuǎn)換工具3主要包括J2PHP模塊311、B2PHP模塊312、內(nèi)存管理模塊32、錯(cuò)誤恢復(fù)模塊33、變量符號表34和程序結(jié)構(gòu)控制堆棧35六部分。變量符號表34保存編譯程序找到的變量名、函數(shù)名及其類型的信息;程序結(jié)構(gòu)控制堆棧35保存由多條語句組成的嵌套結(jié)構(gòu),如循環(huán)、選擇/分支等;J2PHP模塊311是一個(gè)Jscript到PHP的編譯器,該編譯器的設(shè)計(jì)是建立在對JavaScript的文法結(jié)構(gòu)進(jìn)行詳細(xì)分析的基礎(chǔ)上,實(shí)現(xiàn)時(shí)采用自上而下的預(yù)測分析方法。B2PHP模塊312是一個(gè)VBScript到PHP的編譯器,它負(fù)責(zé)分析VBScript程序的語法結(jié)構(gòu),并按照語法制導(dǎo)的思想在適當(dāng)?shù)臅r(shí)機(jī)引發(fā)不同的語法動作,調(diào)用相關(guān)的過程完成整個(gè)VBScript語言的轉(zhuǎn)換和php代碼的生成。內(nèi)存管理模塊32對整個(gè)編譯器的內(nèi)存分配接口和可分配的內(nèi)存空間進(jìn)行統(tǒng)一管理,并且建立合理大小的分配池,以避免每次都從系統(tǒng)空間中分配。以分配池為基礎(chǔ),程序運(yùn)行效率得到了提高,而且還降低了出錯(cuò)的可能性。錯(cuò)誤恢復(fù)模塊33能夠及時(shí)發(fā)現(xiàn)源程序中的錯(cuò)誤,給出合適的診斷信息且繼續(xù)編譯下去從而發(fā)現(xiàn)更多的錯(cuò)誤。J2PHP模塊311包括以下組成部分一符號表,用于存儲所有的符號及其信息,例如類型、范圍等等;一詞法分析器,用于將字符流(如第一腳本)轉(zhuǎn)換為記號,如關(guān)鍵詞、操作符等;一個(gè)語法分析器,用于讀取記號流,并建立語法樹;一語義檢查器,用于檢查語法樹的語義錯(cuò)誤;一中間代碼生成器,用于把語法樹轉(zhuǎn)換為中間代碼;一優(yōu)化器,用于優(yōu)化中間代碼;及一代碼生成器,用于從中間代碼生成字節(jié)碼,即第二腳本。J2PHP模塊在編譯時(shí)采用兩遍掃描。第一遍為預(yù)處理,主要是識別DTC(Design-TimeControl)和函數(shù)聲明。掃描所有函數(shù)定義,并將這些函數(shù)的名字記入函數(shù)表,同時(shí)完成對所有Design-Time控件的轉(zhuǎn)換工作。在識別DTC的同時(shí)產(chǎn)生相關(guān)的PHP代碼,將其存放在代碼表里。識別函數(shù)聲明時(shí)記下函數(shù)的名字,存放在函數(shù)名列表內(nèi),以適應(yīng)函數(shù)使用在前,聲明在后的情況。從DTC對象聲明(由‘<OBJECT’和‘</OBJECT>’包圍的部分)中提取必需的對象屬性值(在第一腳本文件中以“NAME=XXXVALUE=XXX”的形式給出),然后產(chǎn)生PHP代碼,將屬性賦給生成的PHP對象。這些生成的PHP代碼并不馬上輸出,而是暫時(shí)保存在一個(gè)代碼表里,每一個(gè)DTC控件類都有一個(gè)代碼表,存放所有該類對象的代碼。若無該類對象,代碼表為空。預(yù)處理結(jié)束后,以一定的順序輸出預(yù)處理階段產(chǎn)生的所有DTC代碼。在預(yù)處理階段產(chǎn)生的DTC對象所對應(yīng)的變量名都在實(shí)行第二遍掃描之前進(jìn)入符號表,因此在后面的編譯階段,編譯器可識別這些對象,以產(chǎn)生正確的PHP代碼。對于每一個(gè)DTC對象,都有一個(gè)PHP對象實(shí)現(xiàn)其功能。這些PHP對象保存在文件mysql_class.inc和dt_controls.inc中。在最后生成的PHP代碼中必須用“require”語句將這兩個(gè)文件包括進(jìn)去。與DTC相對應(yīng)的PHP類各屬性和方法的使用方式大都和在VisualInterDev下相同,這樣便于用戶在J2PHP產(chǎn)生的代碼的基礎(chǔ)上根據(jù)自己的需要進(jìn)行修改。第二遍為編譯過程,包括詞法分析和語法分析兩大部分。語法分析器由詞法分析器提供標(biāo)識符,負(fù)責(zé)正確識別JScript的語法結(jié)構(gòu),并調(diào)用各轉(zhuǎn)換模塊完成PHP代碼的生成。詞法分析器包括JScript詞法分析器和DTC控件聲明詞法分析器。DTC控件聲明詞法分析器從DTC控件聲明中獲取所需的信息,在預(yù)處理DTC控件聲明時(shí)被調(diào)用,一次返回一個(gè)詞法標(biāo)記。JScript詞法分析器用于從JScript程序中提取正確的詞法標(biāo)記(Symbols)。詞法標(biāo)記共分為四類標(biāo)識符、運(yùn)算符、保留字和特殊對象標(biāo)記。詞法分析器由語法分析器負(fù)責(zé)調(diào)用,每調(diào)用一次返回一個(gè)詞法標(biāo)記,并將詞法標(biāo)記對應(yīng)的單詞保存。在獲得詞法標(biāo)記的同時(shí),詞法分析器還負(fù)責(zé)維護(hù)兩個(gè)外部全局變量line和column,分別被用于跟蹤當(dāng)前輸入文件的行、列號。在錯(cuò)誤處理時(shí),可以準(zhǔn)確地定位錯(cuò)誤點(diǎn)。JScript語法分析器是整個(gè)J2PHP模塊的基礎(chǔ)部分,按照語法制導(dǎo)的思想、采用自上而下不帶回溯的分析算法確保整個(gè)編譯過程在一次掃描過程中完成。下面為J2PHP模塊采用的改變后的JScript文法結(jié)構(gòu)。該文法決定了整個(gè)編譯器的設(shè)計(jì)思想和實(shí)現(xiàn)方法STATEMENT->varexpression[;]|functionIDENT([IDENT[,...]])|expression[;]|if(expression)|else|do|while(expression)|switch(expression)|caseexpression|default|break[;]|for(expression;expression;expression)|exit[([expression])][;]|return[([expression])][;]|linecomment|biockcomment|@STRING|{|}|;在對expression進(jìn)行語法拆解時(shí),必須考慮到算符優(yōu)先級,因?yàn)樽兞康念愋褪强梢詣討B(tài)變化的,而各個(gè)運(yùn)算符又有不同的類型轉(zhuǎn)換方法。為能盡可能正確地識別變量類型,必須對運(yùn)算符的優(yōu)先級進(jìn)行歸類整理,將具有相同的類型轉(zhuǎn)換方法,并在同一個(gè)優(yōu)先級層面上的運(yùn)算符歸為一類,這就出現(xiàn)了若干子表達(dá)式的概念。表達(dá)式通過子表達(dá)式一層層深入,在解析到項(xiàng)目和因子時(shí)終止。在設(shè)置完這些變量并打開源文件和目標(biāo)文件后,便可以調(diào)用編譯器的函數(shù)接口完成轉(zhuǎn)換工作。J2PHP模塊提供了下列函數(shù)接口Intj2php_init(void)用于編譯器初始化;Intj2php_clear(void)用于編譯結(jié)束,釋放編譯器占用的系統(tǒng)資源;voidj2php_regfunc(char*func)將函數(shù)名func記入函數(shù)表jfunct,讓編譯器在以后的編譯過程中識別這個(gè)函數(shù);voidj2php_regvars(char*name,inttype)將變量名name和它的類型type記入全局變量表jgvars;intj2php_parser(FILE*inf,F(xiàn)ILE*outf)在第二遍掃描時(shí)啟動一個(gè)編譯過程,inf和outf分別為源和目標(biāo)文件指針;intj2php_passobject(FILE*inf,F(xiàn)ILE*outf)在第二遍掃描時(shí)讓編譯器處理由html標(biāo)記’<object’和’</object>’包圍的部分。若屬于DTC聲明,編譯器將這段文字略去;若否,原樣輸出。inf和outf分別為源和目標(biāo)文件指針;intj2php_getfunction(FILE*infile)在預(yù)處理階段處理JScript部分,提取函數(shù)聲明并記入函數(shù)表jfunct。inf為源文件指針;intj2php_getobject(FILE*infile)在預(yù)處理階段處理由html標(biāo)記’<object’和’</object>’包圍的部分。若屬于DTC聲明則產(chǎn)生相應(yīng)的PHP代碼;若否,略去這段文字,不產(chǎn)生任何動作。inf為源文件指針;intj2php_createDTC(FILE*outfile)預(yù)處理結(jié)束,第二遍掃描開始之前調(diào)用,其目的是在對預(yù)處理過程中生成的DTC代碼做一定的調(diào)整后輸出到目標(biāo)文件outfile。outfile為目標(biāo)文件指針;因此可以直接使用J2PHP模塊對ASP源文件進(jìn)行轉(zhuǎn)換,也可以讓外部程序提供其它形式的用戶界面,通過接口函數(shù)來調(diào)用編譯器。B2PHP模塊的VBScript詞法分析器用于從VBScript程序中提取正確的詞法標(biāo)記(Symbols),以供語法分析器來調(diào)用。詞法標(biāo)記共分為三類保留字、運(yùn)算符和特殊對象標(biāo)記。而VBScript語法分析器是整個(gè)B2PHP模塊的基礎(chǔ)部分,由它負(fù)責(zé)分析程序的語法結(jié)構(gòu),并按照語法制導(dǎo)的思想,并采用自上而下不帶回溯的分析算法實(shí)現(xiàn)PHP代碼的生成。同時(shí),B2PHP模塊也提供以下函數(shù)接口,可調(diào)用編譯器的函數(shù)接口完成轉(zhuǎn)換工作Intb2php_init(void)初始化編譯器;voidb2php_regvars(char*var,inttype)將變量名name和它的類型type記入全局變量表jgvars;voidb2php_regfunc(char*func)將函數(shù)名func記入函數(shù)表jfunct,讓編譯器在以后的編譯過程中識別這個(gè)函數(shù);intb2php_clear(void)編譯結(jié)束,釋放編譯器占用的系統(tǒng)資源;intb2php_parser(FILE*infile,F(xiàn)ILE*outfile)在第二遍掃描時(shí)啟動一個(gè)編譯過程,inf和outf分別為源和目標(biāo)文件指針;intb2php_getfunction(FILE*infile)在預(yù)處理階段處理JScript部分,提取函數(shù)聲明并記入函數(shù)表jfunct,infile為源文件指針。下面以Jscript代碼的ASP腳本為例說明實(shí)現(xiàn)腳本轉(zhuǎn)換的步驟S3,即第一腳本的編譯由J2PHP模塊來完成。如圖4所示,腳本轉(zhuǎn)換包括如下步驟步驟S311讀取第一腳本并進(jìn)行預(yù)處理,在預(yù)處理中,主程序檢查源文件、目錄和目標(biāo)文件、目錄的有效性、打開文件或目錄、設(shè)置所有的外部全局變量并初始化編譯器;步驟S312進(jìn)行第一次掃描,處理存在的DTC(Design-TimeControl)控件和函數(shù)聲明中的函數(shù)名;讀到‘<object’標(biāo)記,則調(diào)用j2php_getobject處理可能存在的DTC控件;若讀到‘<%’或‘<scriptrunat=serverlanguage=j(luò)avascript>’等表示下面是JScript代碼的標(biāo)記,則調(diào)用j2php_getfunction提取可能存在的函數(shù)聲明中的函數(shù)名;步驟S313若有其它需要預(yù)先聲明的函數(shù)或變量名,則在此時(shí)分別調(diào)用j2php_regfunc和j2php_regvars記入相應(yīng)的變量表;步驟S314調(diào)用j2php_createDTC輸出所述步驟S312中得到的DTC代碼到第二腳本;步驟S315利用J2PHP模塊編譯并轉(zhuǎn)換JScript代碼,若讀到‘<object’標(biāo)記,則調(diào)用j2php_passobject,以保證不將DTC控件聲明輸出到目標(biāo)文件;若讀到‘<%’或‘<scriptrunat=serverlanguage=j(luò)avascript>’等表示下面是JScript代碼的標(biāo)記,則調(diào)用j2php_parser對這段JScript代碼進(jìn)行編譯;步驟S316第二遍掃描結(jié)束,調(diào)用j2php_clear讓編譯器釋放系統(tǒng)資源,并關(guān)閉源文件和目標(biāo)文件的指針。同時(shí)如果要在目標(biāo)文件中包括“grabglobals.inc”和“mysql_class.inc”,則此時(shí)在目標(biāo)文件中生成相應(yīng)的PHP“require”語句。一數(shù)據(jù)庫訪問對象模塊根據(jù)所述數(shù)據(jù)庫轉(zhuǎn)換映射表實(shí)現(xiàn)對腳本轉(zhuǎn)換的關(guān)聯(lián)處理可采取對頁面中包含的SQL語句進(jìn)行靜態(tài)的調(diào)整的方法,也可以采取在執(zhí)行SQL語句進(jìn)行動態(tài)調(diào)整的方法。靜態(tài)調(diào)整的方法是對頁面中數(shù)據(jù)庫SQL語句操作代碼根據(jù)映射表進(jìn)行修改;動態(tài)調(diào)整的方法是PHP語言執(zhí)行時(shí)對SQL語句進(jìn)行修改。動態(tài)調(diào)整不是調(diào)整頁面腳本中的SQL語句,而是調(diào)整執(zhí)行時(shí)傳遞過來的SQL語句,因此重新設(shè)計(jì)SQL語句調(diào)整模塊,就可以支持站點(diǎn)移植到新的數(shù)據(jù)庫上。如圖5所示,圖中可以看出數(shù)據(jù)庫轉(zhuǎn)換映射表2是數(shù)據(jù)庫轉(zhuǎn)換和腳本轉(zhuǎn)換之間的信息通道,在二者之間傳遞庫表結(jié)構(gòu)的修改信息,主要包括大小寫變換、無歧異處理、中文的數(shù)據(jù)表名和字段名轉(zhuǎn)英文等等;而轉(zhuǎn)換程序自動進(jìn)行的調(diào)整主要包括字段數(shù)據(jù)類型的轉(zhuǎn)換等。腳本轉(zhuǎn)換后的PHP腳本代碼中調(diào)用數(shù)據(jù)庫訪問對象模塊4,訪問對象模塊4對由PHP腳本5傳遞過來的SQL語句進(jìn)行優(yōu)化處理后,調(diào)用第二數(shù)據(jù)庫6的底層操作函數(shù)查詢和修改數(shù)據(jù),并將執(zhí)行的結(jié)果返回調(diào)用它的PHP代碼5,通過這種方式建立起了數(shù)據(jù)庫轉(zhuǎn)換工具和腳本轉(zhuǎn)換工具之間的聯(lián)系。因此,由數(shù)據(jù)庫轉(zhuǎn)換工具、腳本轉(zhuǎn)換工具和位于它們之間的數(shù)據(jù)庫訪問對象模塊4共同完成了信息站點(diǎn)的移植工作。當(dāng)然,本發(fā)明還可有其他多種實(shí)施例,在不背離本發(fā)明精神及其實(shí)質(zhì)的情況下,熟悉本領(lǐng)域的技術(shù)人員當(dāng)可根據(jù)本發(fā)明作出各種相應(yīng)的改變和變形,但這些相應(yīng)的改變和變形都應(yīng)屬于本發(fā)明所附的權(quán)利要求的保護(hù)范圍。權(quán)利要求1.一種實(shí)現(xiàn)不同平臺間信息網(wǎng)站移植的方法,用于將第一平臺下的第一信息網(wǎng)站轉(zhuǎn)換成為第二平臺下的第二信息網(wǎng)站,所述第一信息網(wǎng)站包括支持ODBC的第一數(shù)據(jù)庫和第一腳本,所述第二信息網(wǎng)站包括支持ODBC的第二數(shù)據(jù)庫和第二腳本,其特征在于,包括以下步驟步驟S1設(shè)置一數(shù)據(jù)庫轉(zhuǎn)換模塊將所述第一數(shù)據(jù)庫轉(zhuǎn)換為所述第二數(shù)據(jù)庫,同時(shí)實(shí)現(xiàn)對數(shù)據(jù)庫轉(zhuǎn)換的庫表結(jié)構(gòu)的關(guān)聯(lián)處理和兩個(gè)數(shù)據(jù)庫對應(yīng)字段數(shù)據(jù)類型的轉(zhuǎn)換;步驟S2設(shè)置一數(shù)據(jù)庫轉(zhuǎn)換映射表保存數(shù)據(jù)庫轉(zhuǎn)換關(guān)聯(lián)處理中庫表結(jié)構(gòu)的改變和字段數(shù)據(jù)類型的變化;步驟S3設(shè)置一腳本轉(zhuǎn)換模塊將所述第一腳本轉(zhuǎn)換為所述第二腳本;步驟S4設(shè)置一數(shù)據(jù)庫訪問對象模塊根據(jù)所述數(shù)據(jù)庫轉(zhuǎn)換映射表實(shí)現(xiàn)對腳本轉(zhuǎn)換的關(guān)聯(lián)處理。2.根據(jù)權(quán)利要求1所述的實(shí)現(xiàn)不同平臺間信息網(wǎng)站移植的方法,其特征在于所述第一平臺為微軟平臺,所述第二平臺為LINUX平臺。3.根據(jù)權(quán)利要求2所述的實(shí)現(xiàn)不同平臺間信息網(wǎng)站移植的方法,其特征在于所述的數(shù)據(jù)庫轉(zhuǎn)換的關(guān)聯(lián)處理步驟包括庫表結(jié)構(gòu)的無歧義處理、中英文轉(zhuǎn)換和大小寫轉(zhuǎn)換步驟。4.根據(jù)權(quán)利要求3所述的實(shí)現(xiàn)不同平臺間信息網(wǎng)站移植的方法,其特征在于庫表結(jié)構(gòu)的無歧異處理步驟是將所述第二數(shù)據(jù)庫中與關(guān)鍵字沖突的庫、表和字段進(jìn)行重命名;中英文轉(zhuǎn)換步驟是將所述第二數(shù)據(jù)庫中的中文表名和字段名轉(zhuǎn)換為英文的表名和字段名;大小寫轉(zhuǎn)換步驟是將所述第二數(shù)據(jù)庫中的表名和字段名改為小寫。5.根據(jù)權(quán)利要求2、3或4所述的實(shí)現(xiàn)不同平臺間信息網(wǎng)站移植的方法,其特征在于,實(shí)現(xiàn)對腳本轉(zhuǎn)換的關(guān)聯(lián)處理步驟是所述數(shù)據(jù)庫訪問對象模塊接收所述第二腳本傳遞的要執(zhí)行所述第二數(shù)據(jù)庫的SQL語句,并根據(jù)所述數(shù)據(jù)庫轉(zhuǎn)換映射表修改所述SQL語句中的數(shù)據(jù)表和字段。6.根據(jù)權(quán)利要求2、3或4所述的實(shí)現(xiàn)不同平臺間信息網(wǎng)站移植的方法,其特征在于,實(shí)現(xiàn)對腳本轉(zhuǎn)換的關(guān)聯(lián)處理步驟是所述數(shù)據(jù)庫訪問對象模塊根據(jù)所述數(shù)據(jù)庫轉(zhuǎn)換映射表對所述第二腳本中對所述第二數(shù)據(jù)庫進(jìn)行操作的SQL語句中的數(shù)據(jù)表和字段。7.根據(jù)權(quán)利要求2所述的實(shí)現(xiàn)不同平臺間信息網(wǎng)站移植的方法,其特征在于,所述數(shù)據(jù)庫轉(zhuǎn)換模塊包括連接源數(shù)據(jù)庫模塊、數(shù)據(jù)轉(zhuǎn)換模塊和連接目的數(shù)據(jù)庫模塊,所述步驟S1又包括以下步驟步驟S11連接源數(shù)據(jù)庫模塊通過ODBC與源數(shù)據(jù)庫的連接;步驟S12數(shù)據(jù)轉(zhuǎn)換模塊創(chuàng)建用于所述第二數(shù)據(jù)庫的庫表結(jié)構(gòu)、完成所述第一數(shù)據(jù)庫中數(shù)據(jù)的轉(zhuǎn)換、并完成對數(shù)據(jù)庫轉(zhuǎn)換的庫表結(jié)構(gòu)的關(guān)聯(lián)處理;步驟S13連接目的數(shù)據(jù)庫模塊通過ODBC將轉(zhuǎn)換后的所述第一數(shù)據(jù)庫保存為所述第二數(shù)據(jù)庫。8.根據(jù)權(quán)利要求2、3、4或7所述的實(shí)現(xiàn)不同平臺間信息網(wǎng)站移植的方法,其特征在于,所述第一數(shù)據(jù)庫為Access數(shù)據(jù)庫、MsSQLSERVER數(shù)據(jù)庫,所述第二數(shù)據(jù)庫為MySQL數(shù)據(jù)庫。9.根據(jù)權(quán)利要求2或7所述的實(shí)現(xiàn)不同平臺間信息網(wǎng)站移植的方法,其特征在于,所述第一腳本和第二腳本分別為ASP腳本和PHP腳本,所述步驟S3又包括以下步驟步驟S311讀取所述第一腳本并進(jìn)行預(yù)處理;步驟S312進(jìn)行第一次掃描,處理存在的DTC控件和函數(shù)聲明中的函數(shù)名;步驟S313紀(jì)錄需要預(yù)先聲明的函數(shù)或變量名到相應(yīng)變量表;步驟S314輸出所述步驟S32中得到的DTC代碼到所述第二腳本;步驟S315編譯并轉(zhuǎn)換Jscript或VBScript代碼的所述第一腳本;步驟S316編譯結(jié)束,釋放系統(tǒng)資源,并關(guān)閉文件的指針。10.根據(jù)權(quán)利要求9所述的實(shí)現(xiàn)不同平臺間信息網(wǎng)站移植的方法,其特征在于,所述的預(yù)處理包括檢查第一腳本文件、目錄和第二腳本文件、目錄的有效性、打開文件或目錄、設(shè)置所有的外部全局變量并初始化腳本轉(zhuǎn)換模塊。11.根據(jù)權(quán)利要求9所述的實(shí)現(xiàn)不同平臺間信息網(wǎng)站移植的方法,其特征在于,所述步驟S311到步驟S315之間還包括步驟S317所述第二腳本中如包括grabglobals.inc文件和mysql_class.inc文件,則在所述第二腳本中生成相應(yīng)的PHP的require語句。12.根據(jù)權(quán)利要求9所述的實(shí)現(xiàn)不同平臺間信息網(wǎng)站移植的方法,其特征在于變量符號表保存腳本轉(zhuǎn)換模塊程序找到的變量名、函數(shù)名及類型的信息;程序結(jié)構(gòu)控制堆棧保存由多條語句組成的嵌套結(jié)構(gòu);內(nèi)存管理模塊對內(nèi)存分配接口和可分配的內(nèi)存空間進(jìn)行統(tǒng)一管理,并建立內(nèi)存分配池;錯(cuò)誤恢復(fù)模塊對發(fā)現(xiàn)的錯(cuò)誤,給出合適的診斷信息并繼續(xù)處理。全文摘要本發(fā)明公開了一種實(shí)現(xiàn)不同平臺間信息網(wǎng)站移植的方法,將微軟平臺下的第一信息網(wǎng)站轉(zhuǎn)換成為LINUX平臺下的第二信息網(wǎng)站,包括以下步驟數(shù)據(jù)庫轉(zhuǎn)換模塊將第一數(shù)據(jù)庫轉(zhuǎn)換為第二數(shù)據(jù)庫,同時(shí)實(shí)現(xiàn)對數(shù)據(jù)庫轉(zhuǎn)換的庫表結(jié)構(gòu)的關(guān)聯(lián)處理和兩個(gè)數(shù)據(jù)庫對應(yīng)字段數(shù)據(jù)類型的轉(zhuǎn)換;數(shù)據(jù)庫轉(zhuǎn)換映射表保存數(shù)據(jù)庫轉(zhuǎn)換關(guān)聯(lián)處理中庫表結(jié)構(gòu)的改變和字段數(shù)據(jù)類型的變化;腳本轉(zhuǎn)換模塊將第一腳本轉(zhuǎn)換為第二腳本;一數(shù)據(jù)庫訪問對象模塊根據(jù)所述數(shù)據(jù)庫轉(zhuǎn)換映射表實(shí)現(xiàn)對腳本轉(zhuǎn)換的關(guān)聯(lián)處理。本發(fā)明解決了微軟平臺ASP腳本到LINUX平臺PHP腳本的自動轉(zhuǎn)換、ACCESS、MSSQLSERVER等數(shù)據(jù)庫到LINUX平臺MYSQL數(shù)據(jù)庫的自動轉(zhuǎn)換及腳本轉(zhuǎn)換與數(shù)據(jù)庫轉(zhuǎn)換的關(guān)聯(lián)處理等關(guān)鍵問題,可實(shí)現(xiàn)基于微軟系統(tǒng)的信息網(wǎng)站到LINUX系統(tǒng)的自動化移植。文檔編號G06F17/30GK1664816SQ200510011420公開日2005年9月7日申請日期2005年3月11日優(yōu)先權(quán)日2005年3月11日發(fā)明者謝永強(qiáng),王朝君,徐軍申請人:謝永強(qiáng)
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1
讷河市| 蓝山县| 泰兴市| 石楼县| 乐亭县| 莒南县| 鹤庆县| 北川| 华阴市| 峨眉山市| 衡山县| 灵川县| 盐津县| 新津县| 准格尔旗| 蒙山县| 若羌县| 阜宁县| 宜宾县| 克什克腾旗| 仙桃市| 玉溪市| 确山县| 天全县| 章丘市| 方正县| 柞水县| 章丘市| 十堰市| 新乡县| 湄潭县| 桐梓县| 兴业县| 博野县| 东光县| 张家界市| 迭部县| 日土县| 北海市| 清丰县| 堆龙德庆县|