瀚高数据库(Highgo DB)基于 PostgreSQL 内核开发,完全兼容 PostgreSQL 的逻辑备份工具 pg_dump,同时支持瀚高自研的highgo_dump工具(功能与 pg_dump 一致,适配瀚高全版本),以下提供通用导出 SQL 脚本、分场景细化方案、导入恢复方法,覆盖单表、单库、多表、带结构 / 仅数据等核心需求,可直接在 Linux/Windows 命令行执行。
一、核心前提:工具位置与环境配置
1. 工具默认路径(瀚高安装后)
- Linux 系统:$HGDB_HOME/bin/(HGDB_HOME 为瀚高安装根目录,如/opt/HighGoDB-5.6.0/bin/)
- Windows 系统:HGDB安装目录\bin\(如C:\Program Files\HighGoDB\5.6.0\bin\)
2. 便捷操作:配置环境变量(可选)
Linux 执行以下命令(临时生效,永久生效需写入/etc/profile或~/.bashrc):
exportPATH=$HGDB_HOME/bin:$PATHexportPGDATA=$HGDB_HOME/data# 数据库数据目录,可选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(–data-only,仅数据)
# 仅导出mydb库的所有数据,无建表/建索引语句pg_dump -h192.168.1.100 -p5866-U sysdba -d mydb -a -f /backup/mydb_only_data.sql -F p场景 2:仅导出数据库结构,无数据(用于建空库)
核心参数:-s(–schema-only,仅结构)
# 仅导出mydb库的建库、建表、建索引、约束等结构,无INSERT数据pg_dump -h192.168.1.100 -p5866-U sysdba -d mydb -s -f /backup/mydb_only_schema.sql -F p场景 3:导出指定单个表 / 多个表(精准导出,避免全库冗余)
核心参数:-t 表名(单个表)、-t 表名1 -t 表名2(多个表,空格分隔)
# 示例1:导出mydb库中的user表(结构+数据)pg_dump -U sysdba -d mydb -t user -f /backup/mydb_user.sql -F p# 示例2:导出mydb库中的user、order、goods三张表(结构+数据)pg_dump -U sysdba -d mydb -t user -t order -t goods -f /backup/mydb_3tables.sql -F p# 示例3:仅导出指定表的数据(无结构),组合-a和-tpg_dump -U sysdba -d mydb -a -t user -f /backup/mydb_user_only_data.sql -F p场景 4:导出时忽略指定表(排除无需备份的表,如日志表)
核心参数:-T 表名(忽略单个表)、-T 表名1 -T 表名2(忽略多个表)
# 导出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、导出目录写权限、编码一致。