我的站點最初是采用PHP驅動,由MySQL數據庫支持的方案,這在當時是一個明智的方案。在2001年夏天,我將我的數據庫換成了PostgreSQL(有時也簡稱為Postgres)。
這個教程分為兩部分,第一部分講述了我進行這種轉換的動機,并一步步地解釋了如何將已存在有MySQL的數據轉換到Postgres中。第二部分將會解釋如何根據新的數據庫系統對PHP進行相應的調整。
轉換的動機
我第一次了解Postgres是在PHPBuilder網站的一篇文章中。這篇文章將Postgres和MySQL進行了比較,當時我正在使用 MySQL。但是,當我閱讀了這篇文章后,我對Postgres著了迷 -- 但是當時我還沒有想到對我的網站進行重新的設計。
我繼續使用MySQL,因為我的主機提供商只能提供MySQL的支持,這是我所無法改變的。直到有一天,主機提供商的主機崩潰了。我立即換了一個主機提供商,與原來的那個相比,新的主機提供商有很多不同,他們在安全性和穩定性方面對我作出了更多的承諾。新公司試圖說服我使用Postgres,因為 Postgres要比MySQL來得更穩定,但是我當時沒有接受這個建議,因為我的網站已經根據MySQL完成了全部的編碼工作。他們只好專門為我的站點安裝了MySQL。于是問題開始了。
我的第一個工作是將舊服務器上的MySQL的數據拷貝到新的主機上。首先,我將已有的數據dump到一個SQL文件中,然后在新的主機上導入這個SQL文件。在處理這個數千行的文件時,MySQL迅速地崩潰了。重啟MySQL后,其中大概只有一半數據成功地導入了,而且MySQL只能間歇性地工作。最后,他們不得不刪除了已經導入的信息讓我再試一次。MySQL再次崩潰。這種情況重復了好幾次,直到最終我決定將我的SQL文件分割成幾塊。我不得不又試了幾次,最后終于將絕大多數的數據都成功地導入到新的MySQL服務器中。一切都好了,我總算松了一口氣。
在下面的幾個月中,MySQL幾乎每兩周都要崩潰一次,其中最慘痛的一次是在2001年6月底。這一次,存儲在MySQL中的數據完全被毀壞了。我有一個 SQL的備份文件,但是因為上次向MySQL中導入大量數據的痛苦的經歷,這一次我再也不想通過這個備份恢復數據了。這時,公司再次建議我對我的網站進行轉向,使用Postgres。由于MySQL的失敗,最終我接受了這個建議。
將數據從MySQL轉移到Postgres中
將數據從MySQL轉移到Postgres是一個不大的挑戰,因為Postgres比MySQL支持了更多的SQL的標準格式,在POstgres中直接使用SQL的dump結果是不可能的。但是,SQL語法相當相似,因此對于我來說,這并沒有花費太多的時間。
對MySQL的Dump結果進行轉換
首先,要求你的主機提供商為你的帳號建立一個數據庫。和MySQL數據庫一樣,Postgres的數據庫也由一系列包含實際數據的數據表組成。然后,使用mysqldump命令為你的MySQL數據庫做一個dump文件。
|
使用FTP將整個dump文件下載下來。現在在你的計算機上有了這個SQL文件,你可以將其轉換成Postgres可以導入的文件。
首先,從dump文件中剪切所有的MySQL的CREATE TABLE查詢,并將其粘貼到一個單獨的文本文件中。下一步是使用Postgres可以理解的語言重新對數據表進行定義。
Postgres建立表的SQL和MySQL非常類似,但不完全一樣。下面是一個例子:
|
在一個Postgres的表定義中,字段名后面必須跟著字段類型。在上面的例子中我們給出了一些最普通的字段類型,你還可以在有關Postgres數據類型的文檔中找到全部的字段類型的列表。對于不同的任務,Postgres在字段類型方面有多種選擇,并可以存儲各種類型的數據,從Internet地址到貨幣信息到幾何對象的定義。這兒簡要地介紹最常用的幾種數據類型。
新聞熱點
疑難解答