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