by Georges Tarbouriech What about this nice pair ? mysql是一種關系型數據庫系統(RDBMS),其主頁為http://www.mysql.com/。它由GNU GPL發布並供免費使用,請注意閱讀版權聲明。 它可以在許多平台上工作,既作服務器同時又是客戶端。除MySQL之外還有一些其它的自由軟件性質的RDBMS,在這裡不作任何比較,本文僅討論MYSQL。我們也不將其與那些大型商業數據庫像 Informix,Oracle,Sybase等作比,有足夠理由相信MySQL是Internet上使用最廣泛的數據庫系統之一。在這篇文章裡我們使用的MySQL版本是3.23.36。現在的穩定發行版本是3.23.46,而苦苦等待的4.0版仍在測試之中。人們可以從網上下載到它們的源代碼或包文件。 為了將MySQL與Perl結合使用,你還需要些東西: Perl DBI模塊。至少你應該下載DBI, Msql-Mysql-modules, Data-Dumper和Data-ShowTable等。 本文不介紹它們的安裝過程,因為那很簡單,同時包中的說明文件已經提供了你需要知道的所有內容。 Perl全稱是實用摘錄與報告語言(Practical Extraction and Report Language)。 最初它用於文件處理(分析,摘要...),很快它的功能就有了擴展。 你幾乎可以用它來做任何任何事情:系統管理,CGI腳本程序以及數據庫接口程序。 Perl包含於許多(如果不能稱是全部的話)Unix發行版本中,它們中有些是免費的,有些不是。本文寫作時,穩定的版本是5.6.1,版本5.7.2在測試中。本文采用的是5.005_03,很不錯的一個版本,盡管老點。如果你的機子還沒有裝Perl,你可以從http://www.perl.com/下載。Perl提供了許多模塊,用它們幾乎可以完成任何事,你可以從這個網站的CPAN欄目找到它們。 最後一點,為了讓這兩種軟件真正開始工作,你還需要一個web服務器。Apache應該是一個不錯的選擇,它集成於多種Unix系統中。如果你還沒有,可以到http://www.apache.org/下載。 使用的范例 你也許已經注意到LinuxFocus雜志有多種語言的版本。這就意味著作為編輯需要同時管理新文章以及它的譯文版本。一般情況下,我們可以看到大約200篇文章,平均每篇文章有5個語言的版本,這樣產生了大約1000篇文章並且還在繼續增長!這些文章需要被存檔,格式標准化,總結及摘要.....應該怎麼做這些事?當然,用Perl! 我們的總編Guido Socher編寫的許多perl程序使我們的工作變的簡單了許多,他寫過一本三部頭的 Perl教程和一本評論Perl的書。參照本文末尾的參考文獻部分。 Javi,我們的西班牙編輯,用Perl編寫了一個程序來管理翻譯進度。 Atif是我們的明星作者,他來自perl王國,所以他的母語就是Perl。 他同時也撰寫關於MySQL方面文章,致力於一個WEB管理工具改進工作。同樣你可以在參考文獻部分找到他。 總之,如果你在尋找一個Perl世界,加入LinuxFocus。 我是LinuxFocus法文版的編輯之一,我更懶,於是創建了自己的LinuxFocus數據庫,猜猜用什麼: MySQL 和Perl! 建立數據庫 首先你應當已經正確安裝了MySQL,並配置好用戶密碼。關於安裝並不是本文討論的內容,MySQL自帶的大量文檔已經描述了所有細節。 用mysql.server啟動MySQL服務器,這個命令同時調用 safe_mysqld 守護進程,因此你可以給它傳參。 用 mysql -h host -u user -p 連接到服務器,如果服務器就裝在你本機上,就不用加參數-h host。 輸入密碼無誤後,你將連接到服務器。現在可以建立自己的數據庫了。 在mysql命令提示符狀態下輸入 CREATE DATABASE lf; ,這個是我們的示范數據庫(lf代表LinuxFocus),你可以根據你的需要命名成別的。接下來就是給用戶授權了,當然首先你要有足夠的權限(你需要用有administrator權限的用戶連接)。如果需要讓某個用戶管理數據庫,通過 GRANT ALL ON lf.* TO username; 給他授權。輸入 USE lf 選擇剛才創建的數據庫,並創建一張表。在這裡我們創建的表是trissue,命令格式為: CREATE TABLE trissue (num INTEGER UNSIGNED, category VARCHAR(25), title VARCHAR(40), author VARCHAR(20), en VARCHAR(20), es VARCHAR(20), fr VARCHAR(20),de VARCHAR(20), nl VARCHAR(20), ru VARCHAR(20), tk VARCHAR(20), issue VARCHAR(20)); 通過下面的命令可以檢查一下我們剛才創建的表內容是否正確 USE lf SHOW TABLES; DESCRIBE trissue; 下面我們需要在表中填入數據,往一張空表中導入數據的最簡單的方法就是使用一個帶TAB分隔符的文本文件。如果文本文件已經准備好,輸入 LOAD DATA LOCAL INFILE "maindb.txt" INTO TABLE trissue; 如果你的文本文件沒有問題,那麼現在這張表就已經填好數據,你可以通過輸入以下命令檢驗一下: SELECT * FROM trissue; 這將導致顯示一個很長的列表。現在,你就可以進行查詢來獲得任何類型的數據了。 ok,到現在為止,我們僅僅用了MySQL,就可以做任何事情,那麼,用Perl來做什麼? Perl的工作 Perl可以幫助我們自動進行查詢,將結果顯示到一個WEB浏覽器上,等等。重復一遍,首先需要為Perl安裝正確的模塊使之能與MYSQL聯合工作。 現在我們用Perl來寫一個CGI腳本。它的作用是將Perl與Html技術結合以實現查詢數據庫並將結果格式化輸出。 我們用一個簡單的腳本來查詢某一作者的所有文章,顯示文章的編號,分類,標題,不同語言版本的翻譯者的姓名,發表文章的雜志期號。 你可以將這個腳本當作一個模塊使用,但是注意這個例程並不是一個非常可靠的程序。你可以從下面的鏈接下載到一個有詳細注釋的版本。=>hereexecute; 接著用腳本去顯示查詢結果。如果我們不限制查詢條件,將會顯示出數據庫的所有內容,如果我們提供一個作者姓名,則會顯示出與該作者相關的所有文章。當你的數據庫有上千條記錄時,不推薦顯示出所有內容! print