如何把一个php网站的Postgresql数据库向MySQL迁移?

mykelly6 2010-11-29 04:07:47
应客户要求,要做如题的工作,应该怎么去做呢?做的过程中应该注意些什么?
大家能不能把自己的经验说一下,而不是发一个很长的网页链接,小弟顿首拜谢。


先举例说下我目前的疑问:
1。Postgresql从来没用过,数据是用.sql或者.csv格式的文件导出以后,直接导入mysql就可以了吗?
2。php里面是不是只要把pg_开头的函数换成mysql对应函数就可以了?有什么需要特别注意的吗?(比较常见的)
...全文
181 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
mykelly6 2010-11-30
  • 打赏
  • 举报
回复
多谢各位大神耐心解答,我再去好好学习一下。
ACMAIN_CHM 2010-11-29
  • 打赏
  • 举报
回复
建议你可以先花一天的时间看一下MYSQL的手册。

MySQL官方文档 http://dev.mysql.com/doc/refman/5.1/zh/index.html
ACMAIN_CHM 2010-11-29
  • 打赏
  • 举报
回复
MYSQL并不支持建表时指明表空间,其实MYSQL也没有明确的表空间的定义。

所以
USING INDEX TABLESPACE INDX LOGGING PCTFREE 10
STORAGE(INITIAL 512K NEXT 128K MINEXTENTS 1 MAXEXTENTS UNLIMITED)
这两句删除。
mykelly6 2010-11-29
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 wwwwa 的回复:]
默认主键做索引吗?
一般是这样
[/Quote]
USING INDEX TABLESPACE INDX LOGGING PCTFREE 10
因为在这一句里面没看到字段名啊。
lxq19851204 2010-11-29
  • 打赏
  • 举报
回复
WWWWA 2010-11-29
  • 打赏
  • 举报
回复
默认主键做索引吗?
一般是这样
mykelly6 2010-11-29
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 wwwwa 的回复:]
呵呵,转换数据库是比较麻烦的事件,要求两种数据库都要熟悉,先看看 MYSQL的HELP吧
[/Quote]
是啊,比我想象的复杂多了。
话说那个PostgreSQL的sql语句都没看出来是把哪个字段作为索引啊,默认主键做索引吗?
WWWWA 2010-11-29
  • 打赏
  • 举报
回复
呵呵,转换数据库是比较麻烦的事件,要求两种数据库都要熟悉,先看看 MYSQL的HELP吧
mykelly6 2010-11-29
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 wwwwa 的回复:]
MYSQL不支持这些语法,看看MYSQL的HELP吧,直接建立索引

create index tt on t1
[/Quote]
平时用mysql建立索引外键什么的都是用navicat,都没写过这些语句,我杯具了。
WWWWA 2010-11-29
  • 打赏
  • 举报
回复
MYSQL不支持这些语法,看看MYSQL的HELP吧,直接建立索引

create index tt on t1
mykelly6 2010-11-29
  • 打赏
  • 举报
回复

CREATE TABLE clinic_list
(
......
......


USING INDEX TABLESPACE INDX LOGGING PCTFREE 10
STORAGE(INITIAL 512K NEXT 128K MINEXTENTS 1 MAXEXTENTS UNLIMITED)
)
TABLESPACE HELIOS LOGGING PCTFREE 10
STORAGE(INITIAL 5M NEXT 128K MINEXTENTS 1 MAXEXTENTS UNLIMITED) MONITORING
;

COMMENT ON TABLE clinic_list IS 'dental_clinic_table'
;

出错的地方应该是在这,中间字段的定义省略了。
mykelly6 2010-11-29
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 acmain_chm 的回复:]
引用现在手头还没有.sql文件,只有一些数据库设计时的create语句。

那就直接执行这些SQL文件,然后把数据从PSQL中导出,可以导成CSV文件,然后再导入。

不过要小心你的 数据库设计时的create语句 是否和你的数据库中实际情况一致。比如有人改了数据库但并没有去做文档的更新。
[/Quote]
我在执行这些create语句的时候报错了,不知道该着怎么解决。

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'USING INDEX TABLESPACE INDX LOGGING PCTFREE 10
STORAGE(INITIAL 512K NE' at line 30
ACMAIN_CHM 2010-11-29
  • 打赏
  • 举报
回复
[Quote]现在手头还没有.sql文件,只有一些数据库设计时的create语句。[/Quote]

那就直接执行这些SQL文件,然后把数据从PSQL中导出,可以导成CSV文件,然后再导入。

不过要小心你的 数据库设计时的create语句 是否和你的数据库中实际情况一致。比如有人改了数据库但并没有去做文档的更新。
mykelly6 2010-11-29
  • 打赏
  • 举报
回复
现在表里面的数据还没有拿到,网站的php源码有了,想先把数据库建起来弄一点假数据进去试一下。
WWWWA 2010-11-29
  • 打赏
  • 举报
回复
cd C:\PostgreSQL\bin\ 回车
pg_dump -D -h localhost -U postgres -Z -b MyDB> D:\DataBackUp\pgDB.bak 回车

先将表中数据导出来再修改
mykelly6 2010-11-29
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 acmain_chm 的回复:]
引用1。Postgresql从来没用过,数据是用.sql或者.csv格式的文件导出以后,直接导入mysql就可以了吗?你可以导出.sql 文件,然后你需要手工的进行调整,因为两个数据库上有许多细节上的语法并不相同。

一般是先把CREATE TABLE 语句导出,然后在MYSQL执行创建。之后再导数据。 最后去加存储过程,触发器。
[/Quote]
第二点我大概有数,应该是函数里面的参数逐个的去调整。

第一点有点不知道怎么办才好,因为Postgresql从来没用过。
现在手头还没有.sql文件,只有一些数据库设计时的create语句。
mykelly6 2010-11-29
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 wwwwa 的回复:]
1、不是,美容师两个不同的数据库,支持的字段类型、长度等等都有差别,只能将数据导入,
主键、外键、约束、SP、TRIGGER等等要重新建立;
2、不是,要按照MYSQL的语法格式、函数等等重新建立。
[/Quote]
多谢,比我想象的复杂多了。。
能不能所以说具体做法,好像百度到的都是mysql到PostgreSQL的做法
ACMAIN_CHM 2010-11-29
  • 打赏
  • 举报
回复
[Quote]2。php里面是不是只要把pg_开头的函数换成mysql对应函数就可以了?有什么需要特别注意的吗?(比较常见的)[/Quote]这一点上倒是容易,但做起比较繁琐。 基本上就是按pg_的函数改成 mysql_的函数。
ACMAIN_CHM 2010-11-29
  • 打赏
  • 举报
回复
[Quote]1。Postgresql从来没用过,数据是用.sql或者.csv格式的文件导出以后,直接导入mysql就可以了吗?[/Quote]你可以导出.sql 文件,然后你需要手工的进行调整,因为两个数据库上有许多细节上的语法并不相同。

一般是先把CREATE TABLE 语句导出,然后在MYSQL执行创建。之后再导数据。 最后去加存储过程,触发器。
WWWWA 2010-11-29
  • 打赏
  • 举报
回复
1、不是,美容师两个不同的数据库,支持的字段类型、长度等等都有差别,只能将数据导入,
主键、外键、约束、SP、TRIGGER等等要重新建立;
2、不是,要按照MYSQL的语法格式、函数等等重新建立。

56,677

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧