將MySQL數(shù)據(jù)庫移植為PostgreSQL
更新時間:2009年07月26日 22:10:21 作者:
PostgreSQL 作為功能最強勁的開源 OO 數(shù)據(jù)庫,仿佛一直不為國內(nèi)用戶所熟識。而我個人也僅是因為工作的緣故接觸到這款超經(jīng)典的數(shù)據(jù)庫,并深為之折服。
在北美,人們對于 PostgreSQL 的熱情不斷升溫。隨著 PostgreSQL 的發(fā)展, PostgreSQL 8.x 已經(jīng)從技術(shù)上超越 MySQL 5.x ,而市場的超越相信只是時間問題。而最終,用戶也許有機會享受到可媲美 Oracle 的開源數(shù)據(jù)庫也未嘗沒有可能。
我供職的互聯(lián)網(wǎng)公司,服務(wù)約 50 萬商務(wù)用戶,經(jīng)過多次的升級移植,目前公司已經(jīng)全部將后臺數(shù)據(jù)庫從 MySQL 移植到 PostgreSQL ,而個人完成了其中一半的數(shù)據(jù)庫移植工作,所以對數(shù)據(jù)庫從 MySQL 移植到 PostgreSQL 積累了一些經(jīng)驗。在此整理成文,希望能對大家使用 PostgreSQL 有一些啟發(fā)。
1) 準(zhǔn)備: 使用 MySQL 數(shù)據(jù)備份工具對數(shù)據(jù)庫進(jìn)行全備份:
mysqldump -h [hostname] -u [username] -p [password] --extended-insert=false [dbname] > mysql-db.sql
注意 disable extended-insert , PostgreSQL 不支持 MySQL 的 extended-insert
2) 轉(zhuǎn)化: 將 mysql-db.sql 轉(zhuǎn)為 PostgreSQL 可以導(dǎo)入的 SQL Script.
MySQL 和 PostgreSQL 在 SQL 語義上存在一定差異,比如 MySQL 不支持 sequence ,觸發(fā)器等功能,但為此又提供了一些自有的語法規(guī)則,而對比一些系統(tǒng)函數(shù), MySQL 和 PostgreSQL 又存在比較大的差別。為此,我編寫了一段語義分析和轉(zhuǎn)化的程序 mysql2psql
>mysql2psql mysql-db.sql postgres-db.sql
3) 導(dǎo)入: 使用 PostgreSQL 提供的 pgAdmin 將數(shù)據(jù)文件導(dǎo)入數(shù)據(jù)庫。
4) SQL 語句的修改: 在實際的應(yīng)用中,前端的系統(tǒng)往往會嵌入一些具有數(shù)據(jù)庫特性的 SQL 語句,而隨著后臺數(shù)據(jù)庫的改變,前端的系統(tǒng)程序也同樣需要做出相應(yīng)的修改。
MySQL 和 PostgreSQL 最常見的不同之處包括:Group by,Join的使用差異,系統(tǒng)函數(shù)的命名和調(diào)用的差異等等。
我供職的互聯(lián)網(wǎng)公司,服務(wù)約 50 萬商務(wù)用戶,經(jīng)過多次的升級移植,目前公司已經(jīng)全部將后臺數(shù)據(jù)庫從 MySQL 移植到 PostgreSQL ,而個人完成了其中一半的數(shù)據(jù)庫移植工作,所以對數(shù)據(jù)庫從 MySQL 移植到 PostgreSQL 積累了一些經(jīng)驗。在此整理成文,希望能對大家使用 PostgreSQL 有一些啟發(fā)。
1) 準(zhǔn)備: 使用 MySQL 數(shù)據(jù)備份工具對數(shù)據(jù)庫進(jìn)行全備份:
mysqldump -h [hostname] -u [username] -p [password] --extended-insert=false [dbname] > mysql-db.sql
注意 disable extended-insert , PostgreSQL 不支持 MySQL 的 extended-insert
2) 轉(zhuǎn)化: 將 mysql-db.sql 轉(zhuǎn)為 PostgreSQL 可以導(dǎo)入的 SQL Script.
MySQL 和 PostgreSQL 在 SQL 語義上存在一定差異,比如 MySQL 不支持 sequence ,觸發(fā)器等功能,但為此又提供了一些自有的語法規(guī)則,而對比一些系統(tǒng)函數(shù), MySQL 和 PostgreSQL 又存在比較大的差別。為此,我編寫了一段語義分析和轉(zhuǎn)化的程序 mysql2psql
>mysql2psql mysql-db.sql postgres-db.sql
3) 導(dǎo)入: 使用 PostgreSQL 提供的 pgAdmin 將數(shù)據(jù)文件導(dǎo)入數(shù)據(jù)庫。
4) SQL 語句的修改: 在實際的應(yīng)用中,前端的系統(tǒng)往往會嵌入一些具有數(shù)據(jù)庫特性的 SQL 語句,而隨著后臺數(shù)據(jù)庫的改變,前端的系統(tǒng)程序也同樣需要做出相應(yīng)的修改。
MySQL 和 PostgreSQL 最常見的不同之處包括:Group by,Join的使用差異,系統(tǒng)函數(shù)的命名和調(diào)用的差異等等。
相關(guān)文章
mysql 通過拷貝數(shù)據(jù)文件的方式進(jìn)行數(shù)據(jù)庫遷移實例
這篇文章主要介紹了mysql 通過拷貝數(shù)據(jù)文件的方式進(jìn)行數(shù)據(jù)庫遷移實例的相關(guān)資料,需要的朋友可以參考下2016-11-11Ubuntu 18.04配置mysql以及配置遠(yuǎn)程連接的步驟
這篇文章主要給大家介紹了關(guān)于Ubuntu 18.04配置mysql以及配置遠(yuǎn)程連接的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2018-07-07mysql數(shù)據(jù)庫從服務(wù)器移植到個人PC的方法
有時候本地也需要數(shù)據(jù)庫進(jìn)行測試,那么就需要將服務(wù)器的東西移植到本地,如果有服務(wù)器控制權(quán)限,可以直接復(fù)制mysql的目錄(windows下),如果是別的那么就需要下面的方法了。2011-08-08一臺電腦(windows系統(tǒng))安裝兩個版本MYSQL方法步驟
由于新舊項目數(shù)據(jù)庫版本差距太大,編碼格式不同,引擎也不同,所以只好裝兩個數(shù)據(jù)庫,這篇文章主要給大家介紹了關(guān)于一臺電腦(windows系統(tǒng))安裝兩個版本MYSQL的方法步驟,文中通過實例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-03-03