将MySQL数据库移植为PostgreSQL

将MySQL数据库移植为PostgreSQL,第1张

在北美,人们对于

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中执行目标文本文件即可。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/8565710.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-18
下一篇 2023-04-18

发表评论

登录后才能评论

评论列表(0条)

保存