# mysql2pgsql **Repository Path**: liuxili/mysql2pgsql ## Basic Information - **Project Name**: mysql2pgsql - **Description**: SQL脚本转换工具 - **Primary Language**: Java - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 21 - **Forks**: 11 - **Created**: 2019-07-22 - **Last Updated**: 2025-09-03 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # MysqlScriptToPgScript 将Mysql的建表脚本转换为PostgreSQL的建表脚本。 PostgreSQL 与 Mysql 相比,有很多令人向往的东西,网上评论很多,不再赘述。 如想从 MySql 转到 PostgreSQL ,可以试试本项目。 ## 使用方法 ### 1、准备MySQL数据库脚本 * 数据库脚本文件以 .sql 结尾; * 所有数据库脚本文件请放在同一个文件夹下,不要放在子目录中; * 程序自动遍历所有脚本文件,在另一文件夹中生成PgSQL脚本; MySQL脚本示例: ``` CREATE TABLE `t_sys_role` ( `id` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT 'id', `name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '角色名称', PRIMARY KEY (`id`) USING BTREE ) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '角色表' ROW_FORMAT = Compact; ``` 注意:必须有字段注释和表注释! ### 2、编辑config.xml配置文件 配置文件格式如下: ``` E:\mytable E:\pgtable ``` 以上默认已经在E盘中创建好了,mytable和pgtable的文件夹。 其中mytable里存放需要转换的mysql脚本。 注意:目录必须存在! ### 3、执行,两种方式 #### 1)直接修改config文件内容 打开App.java主类,执行main函数即可。 #### 2)生成jar包 1.执行mvn install 2.使用方法1:行执行下列命令,生成所有代码: ``` java -jar .\MyScriptToPgScript.jar config.xml ``` 其中:MyScriptToPgScript.jar 为生成的 jar 包, config.xml 为配置文件路径。 ## 注意 * 表脚本必须要有字段注释和表注释。 * 程序会生成 autocode.log 日志文件。 * 仅支持 UTF-8 。 ## 生成的PgSQL数据表脚本示例: ``` -- ---------------------------- -- Table structure for t_sys_role -- -- 角色表 -- ---------------------------- -- DROP TABLE IF EXISTS "t_sys_role"; CREATE TABLE "t_sys_role"( "id" character varying(255) COLLATE "default" NOT NULL, "name" character varying(255) COLLATE "default" DEFAULT NULL::character varying, CONSTRAINT t_sys_role_pkey PRIMARY KEY ("id") ) WITH ( OIDS = FALSE ) ; COMMENT ON TABLE "t_sys_role" IS '角色表'; COMMENT ON COLUMN "t_sys_role"."id" IS 'id'; COMMENT ON COLUMN "t_sys_role"."name" IS '角色名称'; ``` ## 结语 * 推荐使用第一种方法,也方便错误调试。 * 第二种方法适合给不会使用java的人,打成现有文件,自己去执行即可。