大家能不能把自己的经验说一下,而不是发一个很长的网页链接,小弟顿首拜谢。
先举例说下我目前的疑问:
1。Postgresql从来没用过,数据是用.sql或者.csv格式的文件导出以后,直接导入mysql就可以了吗?
2。php里面是不是只要把pg_开头的函数换成mysql对应函数就可以了?有什么需要特别注意的吗?(比较常见的)
20 个解决方案
#1
1、不是,美容师两个不同的数据库,支持的字段类型、长度等等都有差别,只能将数据导入,
主键、外键、约束、SP、TRIGGER等等要重新建立;
2、不是,要按照MYSQL的语法格式、函数等等重新建立。
主键、外键、约束、SP、TRIGGER等等要重新建立;
2、不是,要按照MYSQL的语法格式、函数等等重新建立。
#2
你可以导出.sql 文件,然后你需要手工的进行调整,因为两个数据库上有许多细节上的语法并不相同。
一般是先把CREATE TABLE 语句导出,然后在MYSQL执行创建。之后再导数据。 最后去加存储过程,触发器。
一般是先把CREATE TABLE 语句导出,然后在MYSQL执行创建。之后再导数据。 最后去加存储过程,触发器。
#3
这一点上倒是容易,但做起比较繁琐。 基本上就是按pg_的函数改成 mysql_的函数。
#4
多谢,比我想象的复杂多了。。
能不能所以说具体做法,好像百度到的都是mysql到PostgreSQL的做法
#5
第二点我大概有数,应该是函数里面的参数逐个的去调整。
第一点有点不知道怎么办才好,因为Postgresql从来没用过。
现在手头还没有.sql文件,只有一些数据库设计时的create语句。
#6
cd C:\PostgreSQL\bin\ 回车
pg_dump -D -h localhost -U postgres -Z -b MyDB> D:\DataBackUp\pgDB.bak 回车
先将表中数据导出来再修改
pg_dump -D -h localhost -U postgres -Z -b MyDB> D:\DataBackUp\pgDB.bak 回车
先将表中数据导出来再修改
#7
现在表里面的数据还没有拿到,网站的php源码有了,想先把数据库建起来弄一点假数据进去试一下。
#8
那就直接执行这些SQL文件,然后把数据从PSQL中导出,可以导成CSV文件,然后再导入。
不过要小心你的 数据库设计时的create语句 是否和你的数据库中实际情况一致。比如有人改了数据库但并没有去做文档的更新。
#9
我在执行这些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
#10
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'
;
出错的地方应该是在这,中间字段的定义省略了。
#11
MYSQL不支持这些语法,看看MYSQL的HELP吧,直接建立索引
create index tt on t1
create index tt on t1
#12
平时用mysql建立索引外键什么的都是用navicat,都没写过这些语句,我杯具了。
#13
呵呵,转换数据库是比较麻烦的事件,要求两种数据库都要熟悉,先看看 MYSQL的HELP吧
#14
是啊,比我想象的复杂多了。
话说那个PostgreSQL的sql语句都没看出来是把哪个字段作为索引啊,默认主键做索引吗?
#15
默认主键做索引吗?
一般是这样
一般是这样
#16
#17
USING INDEX TABLESPACE INDX LOGGING PCTFREE 10
因为在这一句里面没看到字段名啊。
#18
MYSQL并不支持建表时指明表空间,其实MYSQL也没有明确的表空间的定义。
所以
USING INDEX TABLESPACE INDX LOGGING PCTFREE 10
STORAGE(INITIAL 512K NEXT 128K MINEXTENTS 1 MAXEXTENTS UNLIMITED)
这两句删除。
所以
STORAGE(INITIAL 512K NEXT 128K MINEXTENTS 1 MAXEXTENTS UNLIMITED)
#20
多谢各位大神耐心解答,我再去好好学习一下。
#21
#1
1、不是,美容师两个不同的数据库,支持的字段类型、长度等等都有差别,只能将数据导入,
主键、外键、约束、SP、TRIGGER等等要重新建立;
2、不是,要按照MYSQL的语法格式、函数等等重新建立。
主键、外键、约束、SP、TRIGGER等等要重新建立;
2、不是,要按照MYSQL的语法格式、函数等等重新建立。
#2
你可以导出.sql 文件,然后你需要手工的进行调整,因为两个数据库上有许多细节上的语法并不相同。
一般是先把CREATE TABLE 语句导出,然后在MYSQL执行创建。之后再导数据。 最后去加存储过程,触发器。
一般是先把CREATE TABLE 语句导出,然后在MYSQL执行创建。之后再导数据。 最后去加存储过程,触发器。
#3
这一点上倒是容易,但做起比较繁琐。 基本上就是按pg_的函数改成 mysql_的函数。
#4
多谢,比我想象的复杂多了。。
能不能所以说具体做法,好像百度到的都是mysql到PostgreSQL的做法
#5
第二点我大概有数,应该是函数里面的参数逐个的去调整。
第一点有点不知道怎么办才好,因为Postgresql从来没用过。
现在手头还没有.sql文件,只有一些数据库设计时的create语句。
#6
cd C:\PostgreSQL\bin\ 回车
pg_dump -D -h localhost -U postgres -Z -b MyDB> D:\DataBackUp\pgDB.bak 回车
先将表中数据导出来再修改
pg_dump -D -h localhost -U postgres -Z -b MyDB> D:\DataBackUp\pgDB.bak 回车
先将表中数据导出来再修改
#7
现在表里面的数据还没有拿到,网站的php源码有了,想先把数据库建起来弄一点假数据进去试一下。
#8
那就直接执行这些SQL文件,然后把数据从PSQL中导出,可以导成CSV文件,然后再导入。
不过要小心你的 数据库设计时的create语句 是否和你的数据库中实际情况一致。比如有人改了数据库但并没有去做文档的更新。
#9
我在执行这些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
#10
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'
;
出错的地方应该是在这,中间字段的定义省略了。
#11
MYSQL不支持这些语法,看看MYSQL的HELP吧,直接建立索引
create index tt on t1
create index tt on t1
#12
平时用mysql建立索引外键什么的都是用navicat,都没写过这些语句,我杯具了。
#13
呵呵,转换数据库是比较麻烦的事件,要求两种数据库都要熟悉,先看看 MYSQL的HELP吧
#14
是啊,比我想象的复杂多了。
话说那个PostgreSQL的sql语句都没看出来是把哪个字段作为索引啊,默认主键做索引吗?
#15
默认主键做索引吗?
一般是这样
一般是这样
#16
#17
USING INDEX TABLESPACE INDX LOGGING PCTFREE 10
因为在这一句里面没看到字段名啊。
#18
MYSQL并不支持建表时指明表空间,其实MYSQL也没有明确的表空间的定义。
所以
USING INDEX TABLESPACE INDX LOGGING PCTFREE 10
STORAGE(INITIAL 512K NEXT 128K MINEXTENTS 1 MAXEXTENTS UNLIMITED)
这两句删除。
所以
STORAGE(INITIAL 512K NEXT 128K MINEXTENTS 1 MAXEXTENTS UNLIMITED)
#19
#20
多谢各位大神耐心解答,我再去好好学习一下。