👨🎓博主简介
🏅CSDN博客专家
🏅云计算领域优质创作者
🏅华为云开发者社区专家博主
🏅阿里云开发者社区专家博主
💊交流社区:运维交流社区 欢迎大家的加入!
🐋 希望大家多多支持,我们一起进步!😄
🎉如果文章对你有帮助的话,欢迎 点赞 👍🏻 评论 💬 收藏 ⭐️ 加关注+💗

一般默认用户为:kingbase
ksql -h 主机地址 -p 端口号 -U 用户名
ksql -U 用户名
不能删除当前连接的数据库,会报错
DROP DATABASE 数据库名;
DROP DATABASE IF EXISTS 数据库名; -- 防报错
DROP DATABASE 数据库名 WITH (FORCE); -- 强制删除(终止所有连接后删除)
ALTER TABLE 表名 DROP COLUMN 字段名;
ALTER TABLE 表名 DROP COLUMN IF EXISTS 字段名; -- 字段不存在时不报错
ALTER TABLE 表名 DROP COLUMN 字段名 CASCADE; -- 级联删除依赖对象(视图、外键等)
# 列出所有模式
\dn
# 列出所有模式(含描述)
\dn+
SELECT * FROM sys_namespace;
CREATE SCHEMA 模式名 AUTHORIZATION 用户名;
CREATE SCHEMA IF NOT EXISTS 模式名;
SET search_path TO 模式1, 模式2;
SET search_path TO "$user", public;
ALTER DATABASE 数据库名 SET search_path TO 模式名;
ALTER USER 用户名 SET search_path TO 模式名;
ALTER SCHEMA 模式名 RENAME TO 新模式名;
ALTER SCHEMA 模式名 OWNER TO 新所有者;
DROP SCHEMA IF EXISTS 模式名;
DROP SCHEMA 模式名 RESTRICT;
GRANT ALL ON SCHEMA 模式名 TO 用户名;
GRANT CREATE ON SCHEMA 模式名 TO 用户名;
GRANT USAGE ON SCHEMA 模式名 TO 用户名;
REVOKE ALL ON SCHEMA 模式名 FROM 用户名;
REVOKE CREATE ON SCHEMA 模式名 FROM 用户名;
CREATE TABLE 模式名.表名 (...);
- 导出数据库信息 - 包含创建表结构、插入数据、创建模式()
sys_dump -U 用户名 -d 数据库名 -f /路径/备份.sql
sys_dump -U 用户名 -d 数据库名 -s -f /路径/备份.sql
sys_dump -U 用户名 -d 数据库名 -s -C -f /路径/备份.sql
sys_dump -U 用户名 -d 数据库名 -C -f /路径/备份.sql
sys_dump -U 用户名 -d 数据库名 -n 模式名 -s -f /路径/备份.sql
sys_dump -U 用户名 -d 数据库名 -n 模式名 -f /路径/备份.sql
- 导出指定模式的表结构及数据,插入数据默认的
COPY换为INSERT
sys_dump -U 用户名 -d 数据库名 -n 模式名 --inserts -f /路径/备份.sql
sys_dump -U 用户名 -d 数据库名 -n 模式名 --column-inserts -f /路径/备份.sql
# --inserts、--column-inserts 两者区别在于前者导出的插入语句不带列名,例如:
# --inserts:
## INSERT INTO public.users VALUES (1, '张三', 25);
# --column-inserts:
## INSERT INTO public.users (id, name, age) VALUES (1, '张三', 25);
# 1. 导出指定表(含数据)
sys_dump -U 用户名 -d 数据库名 -t 模式名.表名1 -t 模式名.表名2 -f /路径/备份.sql
# 2. 导出指定表(只结构)
sys_dump -U 用户名 -d 数据库名 -t 模式名.表名 -s -f /路径/备份.sql
# 3. 导出带清理语句(恢复前先删除已存在的对象)
sys_dump -U 用户名 -d 数据库名 -c --if-exists -f /路径/备份.sql
# 4. 导出为自定义二进制格式(配合sys_restore使用,体积小)
sys_dump -U 用户名 -d 数据库名 -Fc -Z 6 -f /路径/表结构备份.dmp
# 5. 排除日志表的数据(只导结构)
sys_dump -U 用户名 -d 数据库名 --exclude-table-data=sys_oper_log -f /路径/备份.sql
# 6. 导出一个模式,用INSERT格式,每1000行提交一次
sys_dump -U 用户名 -d 数据库名 -n sso --inserts --rows-per-insert=1000 -f /路径/备份.sql
| 参数 | 说明 | 示例 |
|---|
-h, --host=HOST | 数据库服务器主机地址 | -h 127.0.0.1 |
-p, --port=PORT | 数据库端口号(默认54321) | -p 54321 |
-U, --username=NAME | 连接用户名 | -U kingbase |
-W, --password | 强制提示输入密码 | -W |
-d, --dbname=DBNAME | 要连接的数据库名 | -d mould |
--no-password | 不提示输入密码 | --no-password |
| 参数 | 说明 | 示例 |
|---|
-f, --file=FILENAME | 指定输出文件路径 | -f ./backup.sql |
| `-F, --format=c | d | t |
-v, --verbose | 显示详细执行信息 | -v |
-Z, --compress=0-9 | 压缩级别(0-9),仅适用于自定义格式 | -Z 6 |
| 参数 | 说明 | 示例 |
|---|
-a, --data-only | 只导出数据,不导结构 | -a |
-s, --schema-only | 只导出结构,不导数据 | -s |
-n, --schema=SCHEMA | 只导出指定模式 | -n mould |
-N, --exclude-schema=SCHEMA | 排除指定模式 | -N public |
-t, --table=TABLE | 只导出指定表(可多个) | -t public.users |
-T, --exclude-table=TABLE | 排除指定表 | -T public.temp |
--include-table-data=TABLE | 只导出指定表的数据 | --include-table-data=users |
--exclude-table-data=TABLE | 排除指定表的数据 | --exclude-table-data=log |
--include-tablespace | 包含表空间定义 | --include-tablespace |
--no-tablespaces | 不导出表空间定义 | --no-tablespaces |
| 参数 | 说明 | 示例 |
|---|
--inserts | 数据用 INSERT INTO 代替 COPY | --inserts |
--column-inserts | INSERT 显式带列名(兼容性最好) | --column-inserts |
--rows-per-insert=N | 每条 INSERT 插入 N 行数据(配合 --inserts 使用) | --rows-per-insert=1000 |
--no-tablespaces | 不导出表空间分配信息 | --no-tablespaces |
--no-acl | 不导出权限(GRANT/REVOKE) | --no-acl |
--no-owner | 不导出对象所有者信息 | --no-owner |
--no-sync | 跳过文件同步(可提升速度) | --no-sync |
| 参数 | 说明 | 示例 |
|---|
-O, --no-owner | 不导出所有者信息 | -O |
-x, --no-privileges | 不导出权限信息 | -x |
--disable-triggers | 导出时禁用触发器(用于数据恢复) | --disable-triggers |
--enable-row-security | 启用行安全策略 | --enable-row-security |
--exclude-table-data=TABLE | 排除特定表的数据 | --exclude-table-data=log |
--exclude-schema=SCHEMA | 排除特定模式 | --exclude-schema=temp |
| 参数 | 说明 | 示例 |
|---|
-c, --clean | 导出前先执行 DROP 清理语句 | -c |
-C, --create | 在导出文件中包含 CREATE DATABASE 语句 | -C |
-r, --roles-only | 只导出角色(用户)信息 | -r |
--if-exists | 配合 -c 使用,DROP 时加 IF EXISTS | --if-exists |
| 参数 | 说明 | 示例 |
|---|
-E, --encoding=ENCODING | 指定导出文件的字符编码 | -E UTF8 |
--section=PRE/ DATA / POST | 只导出指定部分 | --section=DATA |
--quote-all-identifiers | 所有标识符加双引号 | --quote-all-identifiers |
--no-unlogged-table-data | 不导出未记录日志表的数据 | --no-unlogged-table-data |
--serializable-deferrable | 使用可串行化事务,保证一致性快照 | --serializable-deferrable |
--lock-wait-timeout=TIMEOUT | 等待表锁超时时间 | --lock-wait-timeout=60000 |
--use-set-session-authorization | 用 SET SESSION AUTHORIZATION 替代 ALTER OWNER | --use-set-session-authorization |
| 导出格式 | 推荐恢复方式 | 说明 |
|---|
纯文本 .sql(默认) | ksql -U kingbase -d 数据库名 -f 文件.sql | 最通用,可读性好 |
自定义格式 .dmp(-Fc) | sys_restore -U kingbase -d 数据库名 文件.dmp | 支持并行恢复、选择性恢复 |
Tar包 .tar(-Ft) | sys_restore -U kingbase -d 数据库名 -Ft 文件.tar | 适合归档 |
目录格式(-Fd) | sys_restore -U kingbase -d 数据库名 -Fd 目录/ | 支持并行恢复 |
# 恢复纯文本SQL
ksql -U kingbase -d mould -f ./mould_backup.sql
# 恢复自定义格式(可选择性恢复)
sys_restore -U kingbase -d mould ./mould.dmp
# 恢复自定义格式,只恢复结构
sys_restore -U kingbase -d mould -s ./mould.dmp
# 恢复自定义格式,只恢复指定表
sys_restore -U kingbase -d mould -t users ./mould.dmp