找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

4234

积分

0

好友

558

主题
发表于 3 小时前 | 查看: 4| 回复: 0

瀚高数据库(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 通用客户端)恢复到目标数据库。

前提

  1. 目标数据库已存在(若导出的是全库结构+数据,需先创建空库):
    # 登录瀚高客户端,创建空库(示例:创建 mydb_new 库)
    psql -U sysdba
    create database mydb_new;
    \q   # 退出客户端
  2. 若仅导入数据,目标库应与源库结构一致。

通用导入命令

# 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

执行后输入密码,等待脚本执行完成即可(大库需耐心等待,无报错即表示恢复成功)。

五、关键注意事项(避坑必备)

  1. 端口注意:瀚高数据库默认端口是 5866,不是 PostgreSQL 的 5432,务必写对,否则连接失败;
  2. 权限要求:执行导出的用户(如 sysdba)需要拥有源数据库的 SELECT 权限,导出表结构还需 USAGE / SELECT ON ALL TABLES 权限;
  3. 路径权限-f 指定的导出目录需提前创建,且执行命令的系统用户(如 root、highgo)对该目录要有写权限,否则会报“权限拒绝”;
  4. 大库处理:若数据库数据量较大(GB 级以上),建议添加 -j 4 开启并行导出(4 为并发数,可根据服务器 CPU 调整),显著提升导出速度;
  5. 编码一致:源库和目标库的编码必须一致(如 UTF8),否则导入后可能出现中文乱码,可通过 \lpsql 中查看数据库编码;
  6. 工具兼容:瀚高 4.x 及以上版本完全兼容 pg_dump,若使用低版本瀚高,建议优先使用 highgo_dump 以避免兼容性问题。

六、快速总结

  1. 瀚高数据库导出 SQL 脚本的核心工具是 pg_dump(推荐)和 highgo_dump,二者参数完全一致;
  2. 通用全量导出命令:pg_dump -U 用户名 -d 库名 -f 路径.sql -F p(本地连接);
  3. 常用参数组合:-a(仅数据)、-s(仅结构)、-t(指定表)、-T(排除表);
  4. 导入脚本使用 psql -d 目标库 -f 脚本路径,前提是目标库已创建且权限充足;
  5. 核心避坑点:默认端口 5866、导出目录写权限、编码一致。

本文由云栈社区编辑整理,更多相关技术文档欢迎查阅 技术文档专区




上一篇:AI正在自我迭代:1134名从业者联名倡议减速,但80%代码已由AI生成
下一篇:国产大模型追着OpenAI打,奥特曼降价也白搭?Kimi会员我都快扛不住了
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2026-8-4 05:52 , Processed in 0.998028 second(s), 41 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2026 云栈社区.

快速回复 返回顶部 返回列表