瀚高数据库(Highgo DB)是基于 PostgreSQL 内核开发的国产数据库,完全兼容 PostgreSQL 的逻辑备份工具 pg_dump,同时还提供了自研的 highgo_dump 工具。本文将系统介绍如何导出 SQL 脚本,涵盖全量备份、单表/多表导出、仅结构或仅数据等常见需求,所有命令均可在 Linux/Windows 命令行下直接执行。
一、核心前提:工具位置与环境配置
1. 工具默认路径(瀚高安装后)
- Linux 系统:
工具所在目录为 HGDB_HOME/bin,数据目录默认为 HGDB_HOME/data(可选)。
使用时可直接在终端调用命令,或将其加入 PATH 环境变量。
- Windows 系统:
将安装目录下的 bin 文件夹添加到「系统变量 - Path」中,重启命令行即可全局使用 pg_dump / highgo_dump。
二、通用基础导出命令(最常用)
适用场景
导出单个数据库的完整结构 + 全量数据,生成可直接执行的 SQL 脚本(包含建库、建表、建索引、插入数据等所有语句),适用于数据库迁移与全量备份。
核心命令(pg_dump / highgo_dump 通用,二选一)
# 方式1:使用 pg_dump(推荐,兼容 PostgreSQL 生态)
pg_dump -h 数据库IP -p 端口号 -U 用户名 -d 数据库名 -f 导出脚本保存路径.sql -F p
# 方式2:使用瀚高自研 highgo_dump(适配瀚高全版本,无兼容问题)
highgo_dump -h 数据库IP -p 端口号 -U 用户名 -d 数据库名 -f 导出脚本保存路径.sql -F p
参数说明(必看,按需修改):
| 参数 |
含义 |
示例 |
-h |
数据库服务端 IP(本地连接可省略或填 127.0.0.1) |
-h 192.168.1.100 |
-p |
瀚高数据库端口(默认 5866,切勿与 PostgreSQL 默认 5432 混淆) |
-p 5866 |
-U |
数据库用户名(瀚高默认管理员用户 sysdba) |
-U sysdba |
-d |
要导出的数据库名 |
-d mydb |
-f |
导出的 SQL 脚本保存路径(含文件名,目录需提前创建) |
-f /data/backup/mydb_full.sql(Linux)
-f D:\backup\mydb_full.sql(Windows) |
-F p |
输出格式为纯 SQL 文本(必选,否则生成二进制备份文件,无法直接执行) |
固定写法 -F p |
执行示例(本地连接,最简版):
# 本地瀚高数据库,默认端口 5866,用户 sysdba,导出 mydb 库到 /backup 目录
pg_dump -U sysdba -d mydb -f /backup/mydb_full.sql -F p
执行后会提示输入用户密码(瀚高默认 sysdba 密码为 Highgo@123,若修改过则输入新密码)。
三、分场景细化导出方案
场景 1:仅导出数据(-a)
保留原有库表结构,只补数据。
核心参数:-a(--data-only)
# 仅导出 mydb 库的所有数据,不导出建表/建索引语句
pg_dump -h 192.168.1.100 -p 5866 -U sysdba -d mydb -a -f /backup/mydb_only_data.sql -F p
场景 2:仅导出结构(-s)
用于快速搭建空库或复制表结构。
核心参数:-s(--schema-only)
# 仅导出 mydb 库的建库、建表、建索引、约束等结构,不包含 INSERT 数据
pg_dump -h 192.168.1.100 -p 5866 -U sysdba -d mydb -s -f /backup/mydb_only_schema.sql -F p
场景 3:导出指定表(-t)
精准导出,避免全库冗余。
核心参数:-t 表名(多个表用空格分隔多个 -t)
# 示例1:导出 mydb 库中的 user 表(结构+数据)
pg_dump -U sysdba -d mydb -t user -f /backup/mydb_user.sql -F p
# 示例2:导出 user、order、goods 三张表(结构+数据)
pg_dump -U sysdba -d mydb -t user -t order -t goods -f /backup/mydb_3tables.sql -F p
# 示例3:仅导出指定表的数据(无结构),组合 -a 和 -t
pg_dump -U sysdba -d mydb -a -t user -f /backup/mydb_user_only_data.sql -F p
场景 4:导出时忽略指定表(-T)
排除无需备份的表(如日志表)。
核心参数:-T 表名(多个表同理)
# 导出 mydb 库全量数据+结构,排除 log 表和 temp 表
pg_dump -U sysdba -d mydb -T log -T temp -f /backup/mydb_exclude_tables.sql -F p
四、SQL 脚本导入 / 恢复方法
导出的 SQL 脚本可通过 psql(瀚高 / PostgreSQL 通用客户端)恢复到目标数据库。
前提
- 目标数据库已存在(若导出的是全库结构+数据,需先创建空库):
# 登录瀚高客户端,创建空库(示例:创建 mydb_new 库)
psql -U sysdba
create database mydb_new;
\q # 退出客户端
- 若仅导入数据,目标库应与源库结构一致。
通用导入命令
# psql 导入 SQL 脚本到指定数据库
psql -h 目标库IP -p 目标库端口 -U 用户名 -d 目标数据库名 -f 导出的SQL脚本路径
导入示例:
# 将 mydb_full.sql 导入到本地瀚高的 mydb_new 库中
psql -U sysdba -d mydb_new -f /backup/mydb_full.sql
执行后输入密码,等待脚本执行完成即可(大库需耐心等待,无报错即表示恢复成功)。
五、关键注意事项(避坑必备)
- 端口注意:瀚高数据库默认端口是 5866,不是 PostgreSQL 的 5432,务必写对,否则连接失败;
- 权限要求:执行导出的用户(如 sysdba)需要拥有源数据库的 SELECT 权限,导出表结构还需
USAGE / SELECT ON ALL TABLES 权限;
- 路径权限:
-f 指定的导出目录需提前创建,且执行命令的系统用户(如 root、highgo)对该目录要有写权限,否则会报“权限拒绝”;
- 大库处理:若数据库数据量较大(GB 级以上),建议添加
-j 4 开启并行导出(4 为并发数,可根据服务器 CPU 调整),显著提升导出速度;
- 编码一致:源库和目标库的编码必须一致(如 UTF8),否则导入后可能出现中文乱码,可通过
\l 在 psql 中查看数据库编码;
- 工具兼容:瀚高 4.x 及以上版本完全兼容
pg_dump,若使用低版本瀚高,建议优先使用 highgo_dump 以避免兼容性问题。
六、快速总结
- 瀚高数据库导出 SQL 脚本的核心工具是
pg_dump(推荐)和 highgo_dump,二者参数完全一致;
- 通用全量导出命令:
pg_dump -U 用户名 -d 库名 -f 路径.sql -F p(本地连接);
- 常用参数组合:
-a(仅数据)、-s(仅结构)、-t(指定表)、-T(排除表);
- 导入脚本使用
psql -d 目标库 -f 脚本路径,前提是目标库已创建且权限充足;
- 核心避坑点:默认端口 5866、导出目录写权限、编码一致。
本文由云栈社区编辑整理,更多相关技术文档欢迎查阅 技术文档专区。