👨🎓博主简介
🏅CSDN博客专家 🏅云计算领域优质创作者 🏅华为云开发者社区专家博主 🏅阿里云开发者社区专家博主 💊交流社区:运维交流社区 欢迎大家的加入! 🐋 希望大家多多支持,我们一起进步!😄 🎉如果文章对你有帮助的话,欢迎 点赞 👍🏻 评论 💬 收藏 ⭐️ 加关注+💗
文章目录
- 一、数据库的操作
-
- 1.1 进入数据库
- 1.2 创建数据库
- 1.3 查看所有数据库
- 1.4 切换到其他数据库
- 1.5 查看当前数据库下的所有表
- 1.6 查看表结构
- 1.7 删除表
- 1.8 删除库
- 1.9 删除一个表中的字段
- 1.10 退出数据库
- 二、数据库的操作 – 模式
-
- 2.1 查看模式
-
- 2.1.1 查看所有模式
- 2.1.2 用SQL查询所有模式(包含内部模式)
- 2.1.3 查看当前使用的模式
- 2.1.4 查看当前搜索路径(模式查找顺序)
- 2.1.5 查看指定模式的表结构
- 2.2 创建模式
-
- 2.2.1 创建新的模式
- 2.2.2 创建模式并指定所有者
- 2.2.3 如果模式不存在则创建(防重复)
- 2.3 切换/设置模式
-
- 2.3.1 切换到指定模式(当前会话有效)
- 2.3.2 设置多个搜索路径(按顺序查找)
- 2.3.3 恢复默认搜索路径
- 2.3.4 修改数据库的默认模式
- 2.3.5 修改用户的默认模式
- 2.3.6 重置搜索路径为默认值
- 2.4 修改模式
-
- 2.4.1 重命名模式
- 2.4.2 修改模式的所有者
- 2.5 删除模式
-
- 2.5.1 删除模式(模式必须为空)
- 2.5.2 删除模式及其所有对象(表、视图等)
- 2.5.3 如果模式存在则删除
- 2.5.4 默认行为,非空则报错
- 2.6 权限管理
-
- 2.6.1 授予模式的所有权限
- 2.6.2 允许用户在该模式下创建对象
- 2.6.3 允许用户使用该模式下的对象
- 2.6.4 收回模式的所有权限
- 2.6.5 收回创建权限
- 2.7 在模式下操作表
-
- 2.7.1 在指定模式下创建表
- 2.7.2 查看指定模式下的所有表
- 2.7.3 查看指定模式下某表的结构
- 2.7.4 删除指定模式下的表
- 2.7.5 查询指定模式下的表数据
- 三、数据库的导入导出
-
- 3.1 导出数据库
-
- 3.1.1 常用导出命令
- 3.1.2 通用连接参数
- 3.1.3 输出控制参数(最常用)
- 3.1.4 内容选择参数(核心)
- 3.1.5 数据格式控制参数
- 3.1.6 对象过滤参数
- 3.1.7 清理与恢复相关参数
- 3.1.8 其他实用参数
- 3.2 数据库恢复命令
-
- 3.2.1 常用恢复命令

一、数据库的操作
1.1 进入数据库
一般默认用户为:kingbase
ksql -h 主机地址 -p 端口号 -U 用户名
ksql -U 用户名
1.2 创建数据库
CREATE DATABASE 数据库名;
1.3 查看所有数据库
\\l
1.4 切换到其他数据库
\\c 库名
1.5 查看当前数据库下的所有表
\\dt
1.6 查看表结构
\\d 表名
1.7 删除表
DROP TABLE 表名;
1.8 删除库
不能删除当前连接的数据库,会报错
DROP DATABASE 数据库名;
DROP DATABASE IF EXISTS 数据库名; — 防报错
DROP DATABASE 数据库名 WITH (FORCE); — 强制删除(终止所有连接后删除)
1.9 删除一个表中的字段
ALTER TABLE 表名 DROP COLUMN 字段名;
ALTER TABLE 表名 DROP COLUMN IF EXISTS 字段名; — 字段不存在时不报错
ALTER TABLE 表名 DROP COLUMN 字段名 CASCADE; — 级联删除依赖对象(视图、外键等)
1.10 退出数据库
\\q
二、数据库的操作 – 模式
2.1 查看模式
2.1.1 查看所有模式
# 列出所有模式
\\dn
# 列出所有模式(含描述)
\\dn+
2.1.2 用SQL查询所有模式(包含内部模式)
SELECT * FROM sys_namespace;
2.1.3 查看当前使用的模式
SELECT current_schema();
2.1.4 查看当前搜索路径(模式查找顺序)
SHOW search_path;
2.1.5 查看指定模式的表结构
\\dt 模式名.*
2.2 创建模式
2.2.1 创建新的模式
CREATE SCHEMA 模式名;
2.2.2 创建模式并指定所有者
CREATE SCHEMA 模式名 AUTHORIZATION 用户名;
2.2.3 如果模式不存在则创建(防重复)
CREATE SCHEMA IF NOT EXISTS 模式名;
2.3 切换/设置模式
2.3.1 切换到指定模式(当前会话有效)
SET search_path TO 模式名;
2.3.2 设置多个搜索路径(按顺序查找)
SET search_path TO 模式1, 模式2;
2.3.3 恢复默认搜索路径
SET search_path TO "$user", public;
2.3.4 修改数据库的默认模式
ALTER DATABASE 数据库名 SET search_path TO 模式名;
2.3.5 修改用户的默认模式
ALTER USER 用户名 SET search_path TO 模式名;
2.3.6 重置搜索路径为默认值
RESET search_path;
2.4 修改模式
2.4.1 重命名模式
ALTER SCHEMA 模式名 RENAME TO 新模式名;
2.4.2 修改模式的所有者
ALTER SCHEMA 模式名 OWNER TO 新所有者;
2.5 删除模式
2.5.1 删除模式(模式必须为空)
DROP SCHEMA 模式名;
2.5.2 删除模式及其所有对象(表、视图等)
DROP SCHEMA 模式名 CASCADE;
2.5.3 如果模式存在则删除
DROP SCHEMA IF EXISTS 模式名;
2.5.4 默认行为,非空则报错
DROP SCHEMA 模式名 RESTRICT;
2.6 权限管理
2.6.1 授予模式的所有权限
GRANT ALL ON SCHEMA 模式名 TO 用户名;
2.6.2 允许用户在该模式下创建对象
GRANT CREATE ON SCHEMA 模式名 TO 用户名;
2.6.3 允许用户使用该模式下的对象
GRANT USAGE ON SCHEMA 模式名 TO 用户名;
2.6.4 收回模式的所有权限
REVOKE ALL ON SCHEMA 模式名 FROM 用户名;
2.6.5 收回创建权限
REVOKE CREATE ON SCHEMA 模式名 FROM 用户名;
2.7 在模式下操作表
2.7.1 在指定模式下创建表
CREATE TABLE 模式名.表名 (...);
2.7.2 查看指定模式下的所有表
\\dt 模式名.*
2.7.3 查看指定模式下某表的结构
\\d 模式名.表名
2.7.4 删除指定模式下的表
DROP TABLE 模式名.表名;
2.7.5 查询指定模式下的表数据
SELECT * FROM 模式名.表名;
三、数据库的导入导出
3.1 导出数据库
sys_dump [参数]
3.1.1 常用导出命令
- 导出数据库信息 – 包含创建表结构、插入数据、创建模式(注意:不包含创建数据库的sql)
sys_dump -U 用户名 -d 数据库名 -f /路径/备份.sql
- 导出指定数据库的表结构(不包含自动创建数据库sql及数据)
sys_dump -U 用户名 -d 数据库名 -s -f /路径/备份.sql
- 导出指定数据库需要自动创建库和表结构的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
3.1.2 通用连接参数
| -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 |
3.1.3 输出控制参数(最常用)
| -f, –file=FILENAME | 指定输出文件路径 | -f ./backup.sql |
| `-F, –format=c | d | t |
| -v, –verbose | 显示详细执行信息 | -v |
| -Z, –compress=0-9 | 压缩级别(0-9),仅适用于自定义格式 | -Z 6 |
3.1.4 内容选择参数(核心)
| -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 |
3.1.5 数据格式控制参数
| –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 |
3.1.6 对象过滤参数
| -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 |
3.1.7 清理与恢复相关参数
| -c, –clean | 导出前先执行 DROP 清理语句 | -c |
| -C, –create | 在导出文件中包含 CREATE DATABASE 语句 | -C |
| -r, –roles-only | 只导出角色(用户)信息 | -r |
| –if-exists | 配合 -c 使用,DROP 时加 IF EXISTS | –if-exists |
3.1.8 其他实用参数
| -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 |
3.2 数据库恢复命令
| 纯文本 .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 目录/ | 支持并行恢复 |
3.2.1 常用恢复命令
# 恢复纯文本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
- 数据库中导入sql
# 需要先进入到库中
\\i /路径/备份.sql



