应客户要求,要做如题的工作,应该怎么去做呢?做的过程中应该注意些什么?
大家能不能把自己的经验说一下,而不是发一个很长的网页链接,小弟顿首拜谢。
先举例说下我目前的疑问:
1。Postgresql从来没用过,数据是用.sql或者.csv格式的文件导出以后,直接导入mysql就可以了吗?
2。php里面是不是只要把pg_开头的函数换成mysql对应函数就可以了?有什么需要特别注意的吗?(比较常见的)

解决方案 »

  1.   

    1、不是,美容师两个不同的数据库,支持的字段类型、长度等等都有差别,只能将数据导入,
    主键、外键、约束、SP、TRIGGER等等要重新建立;
    2、不是,要按照MYSQL的语法格式、函数等等重新建立。
      

  2.   

    你可以导出.sql 文件,然后你需要手工的进行调整,因为两个数据库上有许多细节上的语法并不相同。一般是先把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 回车先将表中数据导出来再修改
      

  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
      

  12.   

    平时用mysql建立索引外键什么的都是用navicat,都没写过这些语句,我杯具了。
      

  13.   

    呵呵,转换数据库是比较麻烦的事件,要求两种数据库都要熟悉,先看看 MYSQL的HELP吧
      

  14.   

    是啊,比我想象的复杂多了。
    话说那个PostgreSQL的sql语句都没看出来是把哪个字段作为索引啊,默认主键做索引吗?
      

  15.   

    USING INDEX TABLESPACE INDX LOGGING PCTFREE 10
    因为在这一句里面没看到字段名啊。
      

  16.   

    MYSQL并不支持建表时指明表空间,其实MYSQL也没有明确的表空间的定义。所以
        USING INDEX TABLESPACE INDX LOGGING PCTFREE 10                                
        STORAGE(INITIAL 512K NEXT 128K MINEXTENTS 1 MAXEXTENTS UNLIMITED)          
    这两句删除。
      

  17.   

    建议你可以先花一天的时间看一下MYSQL的手册。MySQL官方文档 http://dev.mysql.com/doc/refman/5.1/zh/index.html