pgadmin转mysql_MySQL转换至PostgreSQL数据库的详细步骤

本文详述了如何将MySQL数据库转换为PostgreSQL的过程,包括表结构转换、数据迁移和注意事项,如处理ID主键、字符类型、整数类型、时间戳、大小写敏感性等问题,以及解决导入过程中可能出现的错误。
摘要由CSDN通过智能技术生成

由于项目需要,需要将mysql数据库转为 PostgreSQL数据库。大概的整理下了。

一、mysql表

CREATE TABLE `ss_users` (

`ID` int(11) NOT NULL

auto_increment,

`PASSWD` varchar(200) NOT NULL,

`NAME` varchar(80) NOT NULL,

`REALNAME` varchar(80) default

NULL,

`EMAIL` varchar(200) default NULL,

`Depart_ID` int(11) unsigned zerofill default

NULL,

`STATUS` int(2) default NULL,

`DESCN` varchar(255) default NULL,

PRIMARY KEY   (`ID`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE `ss_role_resc` (

`id` int(11) NOT NULL

auto_increment,

`ROLE_ID` int(11) NOT NULL,

`RESC_ID` int(11) NOT NULL,

PRIMARY KEY   (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- Table "ss_users" DDL  CREATE TABLE `ss_users` (   `ID` int(11) NOT NULL auto_increment,   `PASSWD` varchar(200) NOT NULL,   `NAME` varchar(80) NOT NULL,   `REALNAME` varchar(80) default NULL,   `EMAIL` varchar(200) default NULL,   `Depart_ID` int(11) unsigned zerofill default NULL,   `STATUS` int(2) default NULL,   `DESCN` varchar(255) default NULL,   PRIMARY KEY  (`ID`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;  CREATE TABLE `ss_role_resc` (   `id` int(11) NOT NULL auto_increment,   `ROLE_ID` int(11) NOT NULL,   `RESC_ID` int(11) NOT NULL,   PRIMARY KEY  (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

DROP TABLE ss_users;

CREATE TABLE ss_users

(

id serial NOT NULL,

passwd varchar(200) NOT NULL,

name varchar(100) NOT NULL,

realname varchar(100),

email varchar(200),

depart_id int8 NOT NULL DEFAULT 0,

status int2 NOT NULL DEFAULT 1,

descn varchar(255),

CONSTRAINT ss_users_pkey PRIMARY KEY

(id)

)

WITHOUT OIDS;

ALTER TABLE ss_users OWNER TO postgres;

CREATE TABLE ss_role_resc (

id serial NOT NULL,

ROLE_ID int2 NOT NULL,

RESC_ID int2 NOT NULL,

CONSTRAINT ss_role_resc_pkey PRIMARY KEY

(id)

)

-- Table: ss_users  DROP TABLE ss_users;  CREATE TABLE ss_users (   id serial NOT NULL,   passwd varchar(200) NOT NULL,   name varchar(100) NOT NULL,   realname varchar(100),   email varchar(200),   depart_id int8 NOT NULL DEFAULT 0,   status int2 NOT NULL DEFAULT 1,   descn varchar(255),   CONSTRAINT ss_users_pkey PRIMARY KEY (id) )  WITHOUT OIDS; ALTER TABLE ss_users OWNER TO postgres;  CREATE TABLE ss_role_resc (   id serial NOT NULL,   ROLE_ID int2 NOT NULL,   RESC_ID int2 NOT NULL,   CONSTRAINT ss_role_resc_pkey PRIMARY KEY (id) )

大概整理了下转化的一些要点。

表对应:

1、MYSQL 的 ID 唯一键 对应 PostgreSQL中的 serial字段。

2、varchar 都一样,注意字符数。

3、int float double 都有对应的字段

4、字段如果有 “`”,去掉。

5、PostgreSQL 是大小写区分的。默认导进去的sql语句都会转为小写。

6、datetime 对应 TIMESTAMP ,date,time 分别都有对应。 PostgreSQL 有 默认 DEFAULT

now()。

导入数据:

1、记得带上分号。

2、表 `ss_users` 的 两个 ` 去掉。

3、数据中 如果是双引号 改为 单引号。

可能出现的几个错误:

1、postgres默认安装好像不支持hibernate自增长。会提示hibernate_sequence不存在。

执行CREATE SEQUENCE hibernate_sequence INCREMENT 1 MINVALUE 1

MAXVALUE 9223372036854775807 START 1

CACHE 1;即可创建postgres的hibernate自增长支持

2、导出的sql语句 导入到PostgreSQL中的时候 可能出现下面的错误。

language "plpgsql" already exists

把下面注释掉,就可以。

--

-- Name: plpgsql; Type: PROCEDURAL LANGUAGE; Schema: -; Owner:

--

3、Postgres另一个小问题上,它的"serial"数据类型(等价于MYSQL的auto_increment)会造成一个"sequence"。如果从

mysql中批量导入数据,会存在 自动 department_id_seq 下的 START 1

不自动增加。解决方法,直接用pgadmin管理更改

PgAdmin是一款开源的PostgreSQL数据库管理工具,它提供了一个直观且易于使用的图形界面,方便用户进行数据库管理和开发工作。PgAdmin 4是最新版本的PgAdmin,提供了许多新的功能和改进。 要安装PgAdmin 4,首先需要下载安装包。可以在PgAdmin的官方网站或者其他可信的软件下载网站上找到安装包。安装包的文件格式为一个可执行文件,通常是一个后缀为.exe的文件。可以根据系统的需求选择适当的操作系统版本进行下载。 一旦下载完成,双击安装包文件开始安装过程。在安装过程中,可以根据提示选择安装位置、选择需要安装的组件和设置其他选项。安装程序会自动解压和安装所需的文件和依赖项。 安装完成后,可以在开始菜单或者桌面上找到PgAdmin 4的快捷方式。双击打开PgAdmin 4,会出现一个登录界面。在登录界面上,需要输入所需的数据库服务器信息,包括服务器地址、端口号、用户名和密码。输入完毕后,点击登录按钮即可连接到数据库服务器。 连接成功后,可以在PgAdmin 4的界面上进行各种数据库管理和开发操作。例如,可以创建、修改、删除数据库、表和视图,执行SQL查询和脚本,浏览和编辑表的数据等等。PgAdmin 4还提供了一些高级功能,如服务器监控、性能统计和备份恢复等。用户可以根据自己的需要选择使用这些功能。 总之,PgAdmin 4是一款功能强大且易于使用的PostgreSQL数据库管理工具。通过下载和安装PgAdmin 4的安装包,用户可以快速方便地进行数据库管理和开发工作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值