to_date(text, text):to_date('05 Dec 2000', 'DD Mon YYYY')
清河門ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場景,ssl證書未來市場廣闊!成為成都創(chuàng)新互聯(lián)的ssl證書銷售渠道,可以享受市場價(jià)格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:13518219792(備注:SSL證書合作)期待與您的合作!
PostgreSQL可以直接使用::來轉(zhuǎn)換類型, 示例:
select '2014-11-12'::date as dv;
在北美,人們對于
PostgreSQL
的熱情不斷升溫。隨著
PostgreSQL
的發(fā)展,
PostgreSQL
8.x
已經(jīng)從技術(shù)上超越
MySQL
5.x
,而市場的超越相信只是時(shí)間問題。而最終,用戶也許有機(jī)會(huì)享受到可媲美
Oracle
的開源數(shù)據(jù)庫也未嘗沒有可能。
我供職的互聯(lián)網(wǎng)公司,服務(wù)約
50
萬商務(wù)用戶,經(jīng)過多次的升級(jí)移植,目前公司已經(jīng)全部將后臺(tái)數(shù)據(jù)庫從
MySQL
移植到
PostgreSQL
,而個(gè)人完成了其中一半的數(shù)據(jù)庫移植工作,所以對數(shù)據(jù)庫從
MySQL
移植到
PostgreSQL
積累了一些經(jīng)驗(yàn)。在此整理成文,希望能對大家使用
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
語句的修改:
在實(shí)際的應(yīng)用中,前端的系統(tǒng)往往會(huì)嵌入一些具有數(shù)據(jù)庫特性的
SQL
語句,而隨著后臺(tái)數(shù)據(jù)庫的改變,前端的系統(tǒng)程序也同樣需要做出相應(yīng)的修改。
MySQL
和
PostgreSQL
最常見的不同之處包括:Group
by,Join的使用差異,系統(tǒng)函數(shù)的命名和調(diào)用的差異等等。
Postgresql不支持跨數(shù)據(jù)庫操作。 可以通過pg_dump加上pg_restore或psql來完成遷移,或者直接使用sql語句中的copy語句來完成數(shù)據(jù)的遷移。
如果表結(jié)構(gòu)在mysql和postgresql的結(jié)構(gòu)差別不大,那么相互遷移是比較簡單的。
可以通過用shell腳本來處理能很好的實(shí)現(xiàn)。
第一:mysql 導(dǎo)出文本文件。
第二:shell處理文本文件的格式,使之適合postgresql導(dǎo)入格式,生成至目標(biāo)文本文件。
第三:在postgresql中執(zhí)行目標(biāo)文本文件即可。