记录一次 pg 数据库创建

0、docker 启动(注意版本,我之前直接用 latest版本,Navicat 会连接不上报错)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
mkdir -p /home/amoros/pg/data
cd /home/amoros/pg

vi run_docker_container
------
docker run -d \
--name pg \
-e POSTGRES_PASSWORD=postgres \
-e PGDATA=/var/lib/postgresql/data/pgdata \
-v /home/amoros/pg/data:/var/lib/postgresql/data \
--net host \
--restart always \
postgres:14
------

chmod 777 run_docker_container

./run_docker_container

1、dbeaver 连接

2、勾选非缺省数据库
在这里插入图片描述

3、创建数据库,使用dbeaver
在这里插入图片描述

4、备份表 DDL
在这里插入图片描述

5、如果需要手动建表,使用Navicat

6、导出数据,使用 dbeaver
在这里插入图片描述

7、记得恢复一下最大序列号

1
2
-- 一个库所有表恢复最大
SELECT CONCAT(E'SELECT setval(\'', relname, E'\', MAX(id)) FROM ', split_part(relname, '_id_seq', 1), ';') sql FROM pg_class WHERE relkind = 'S'

PG转MySQL

1
2
3
4
5
6
7
8
9
10
11
12
使用PG直接导入到MySQL过去,没有表自动创建,再Navicat把备注依次复制一下修改。

再修改一下字段类型,如:
MySQL PG
----------------------
bigint serial8
tinyint bool
MySQL (创建修改时间)都填写CURRENT_TIMESTAMP,修改并勾选更新时 PG (创建修改时间)都添写CURRENT_TIMESTAMP

具体可参考 message/db/pg.sql、mysql.sql

mysql 创建库,使用dbeaver