PostgreSQL
的热情不断升温。随着
PostgreSQL
的发展,
PostgreSQL
8.x
已经从技术上超越
MySQL
5.x
,而市场的超越相信只是时间问题。而最终,用户也许有机会享受到可媲美
Oracle
的开源数据库也未尝没有可能。
我供职的互联网公司,服务约
50
万商务用户,经过多次的升级移植,目前公司已经全部将后台数据库从
MySQL
移植到
PostgreSQL
,而个人完成了其中一半的数据库移植工作,所以对数据库从
MySQL
移植到
PostgreSQL
积累了一些经验。在此整理成文,希望能对大家使用
PostgreSQL
有一些启发。
1)
准备:
使用
MySQL
数据备份工具对数据库进行全备份:
mysqldump
-h
[hostname]
-u
[username]
-p
[password]
--extended-insert=false
[dbname]
>
mysql-db.sql
注意
disable
extended-insert
,
PostgreSQL
不支持
MySQL
的
extended-insert
2)
转化:
将
mysql-db.sql
转为
PostgreSQL
可以导入的
SQL
Script.
MySQL
和
PostgreSQL
在
SQL
语义上存在一定差异,比如
MySQL
不支持
sequence
,触发器等功能,但为此又提供了一些自有的语法规则,而对比一些系统函数,
MySQL
和
PostgreSQL
又存在比较大的差别。为此,我编写了一段语义分析和转化的程序
mysql2psql
>mysql2psql
mysql-db.sql
postgres-db.sql
3)
导入:
使用
PostgreSQL
提供的
pgAdmin
将数据文件导入数据库。
4)
SQL
语句的修改:
在实际的应用中,前端的系统往往会嵌入一些具有数据库特性的
SQL
语句,而随着后台数据库的改变,前端的系统程序也同样需要做出相应的修改。
MySQL
和
PostgreSQL
最常见的不同之处包括:Group
by,Join的使用差异,系统函数的命名和调用的差异等等。
如果表结构在mysql和postgresql的结构差别不大,那么相互迁移是比较简单的。可以通过用shell脚本来处理能很好的实现。
第一:mysql 导出文本文件。
第二:shell处理文本文件的格式,使之适合postgresql导入格式,生成至目标文本文件。
第三:在postgresql中执行目标文本文件即可。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)