MYSQL迁移到PostgreSQL

友情推荐开始
ALSQL是一个通用的数据库查询工具。它支持多种主流数据库、支持直连模式、有统一的使用体验、有强大的过滤功能、有更多数据展示模式、面向项目、为逆向而优化、并且免安装和免费。下载体验及更多图文介绍:http://www.alsql.com
友情推荐结束

最近有一个MYSQL库要迁到PostgreSQL,找了两天也没找到合适又免费的工具,只好自己手工处理。这是这次MYSQL->PostgreSQL数据库转换过程中所做的记录,供参考。

 

TABLE
-----

1、`要去掉
2、int(11) -> int
3、AUTO_INCREMENT -> serial,不能再指定类型(如:int)
4、ENGINE=InnoDB DEFAULT CHARSET=utf8要去掉
5、UNIQUE KEY DIRSVRDID (DIRSVR,DID) -> UNIQUE(DIRSVR,DID),约束名可以没有,KEY关键字不允许
6、COMMENT要特殊处理,移到Create Table结构体外 -> COMMENT ON TABLE "table_name"."field_name" IS 'xxx';
7、datatime -> timestamp
8、timestamp默认值不能是0,0000-00-00 00:00:00 -> 1970-01-01 00:00:00 
9、DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP -> DEFAULT now()
10、 CHARACTER SET gbk要去掉
11、double -> double precision


VIEW
----

1、`要去掉
2、ALGORITHM=UNDEFINED DEFINER=root@localhost SQL SECURITY DEFINER 要去掉
3、DELIMITER ;;要去掉


OTHER
-----

1、PostgreSQL没有PROCEDURE关键字,存储过程要改写

2、这种UPDATE语句:

UPDATE BRIDGE_USERGROUPGRANT a,TEMP_PERMISSION_INFO_IAVM b 
SET 
    b.GRANT_HISTORY=a.GRANT_HISTORY, 
    b.GRANT_MONITOR=a.GRANT_MONITOR, 
    b.GRANT_PTZ=a.GRANT_PTZ, 
    b.GRANT_ALARM=a.GRANT_ALARM, 
    b.GRANT_RECORD=a.GRANT_RECORD, 
    b.GRANT_SNAPSHOT=a.GRANT_SNAPSHOT, 
    b.GRANT_DEVICESET = a.GRANT_DEVICESET, 
    b.GRANT_RESERVED1 = a.GRANT_RESERVED1, 
    b.GRANT_RESERVED2 = a.GRANT_RESERVED2 
WHERE a.DEVICEID = b.NODEID
AND a.LOCATIONINDEX = b.NODEID2
AND a.DIRECTORYSERVERID = b.DIRECTORYSERVERID
AND b.NodeType <> 0
AND a.UserGroupID= AUSERGROUPID;

要改写为:

UPDATE TEMP_PERMISSION_INFO_IAVM 
SET 
    GRANT_HISTORY=a.GRANT_HISTORY, 
    GRANT_MONITOR=a.GRANT_MONITOR, 
    GRANT_PTZ=a.GRANT_PTZ, 
    GRANT_ALARM=a.GRANT_ALARM, 
    GRANT_RECORD=a.GRANT_RECORD, 
    GRANT_SNAPSHOT=a.GRANT_SNAPSHOT, 
    GRANT_DEVICESET = a.GRANT_DEVICESET, 
    GRANT_RESERVED1 = a.GRANT_RESERVED1, 
    GRANT_RESERVED2 = a.GRANT_RESERVED2 
from BRIDGE_USERGROUPGRANT a,TEMP_PERMISSION_INFO_IAVM b 
WHERE a.DEVICEID = b.NODEID
AND a.LOCATIONINDEX = b.NODEID2
AND a.DIRECTORYSERVERID = b.DIRECTORYSERVERID
AND b.NodeType <> 0
AND a.UserGroupID= AUSERGROUPID;

友情推荐开始
ALSQL是一个通用的数据库查询工具。它支持多种主流数据库、支持直连模式、有统一的使用体验、有强大的过滤功能、有更多数据展示模式、面向项目、为逆向而优化、并且免安装和免费。下载体验及更多图文介绍:http://www.alsql.com
友情推荐结束 

你可能感兴趣的:(MYSQL迁移到PostgreSQL)