將你的網站從MySQL改為PostgreSQL

來源:互聯網
上載者:User

【導讀】本文分為兩部分,第一部分講述了我進行這種轉換的動機,並一步步地解釋了如何將已存在有MySQL的資料轉換到Postgres中。第二部分將會解釋如何根據新的資料庫系統對PHP進行相應的調整。

本文分為兩部分,第一部分講述了我進行這種轉換的動機,並一步步地解釋了如何將已存在有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檔案。
mysqldump -u username -p databasename > sqldump.txt

使用FTP將整個dump檔案下載下來。現在在你的電腦上有了這個SQL檔案,你可以將其轉換成Postgres可以匯入的檔案。

首先,從dump檔案中剪下所有的MySQL的CREATE TABLE查詢,並將其粘貼到一個單獨的文字檔中。下一步是使用Postgres可以理解的語言重新對資料表進行定義。

Postgres建立表的SQL和MySQL非常類似,但不完全一樣。下面是一個例子:
CREATE TABLE practicetable
{
someID SERIAL,
time TIMESTAMP DEFAULT now(),
name VARCHAR(50),
address VARCHAR(50),
city VARCHAR(50),
state VARCHAR(2),
country VARCHAR(3) DEFAULT 'USA',
postlcode VARCHAR(15),
age smallint,
lattitude real,
longitude real,
somebool boolean,
message textitem
};

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.