👨🎓博主简介
🏅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 数据库恢复命令
![]()
一、数据库的操作
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 删除表
DROPTABLE表名;
1.8 删除库
不能删除当前连接的数据库,会报错
DROPDATABASE数据库名;DROPDATABASEIFEXISTS数据库名;-- 防报错DROPDATABASE数据库名WITH(FORCE);-- 强制删除(终止所有连接后删除)
1.9 删除一个表中的字段
ALTERTABLE表名DROPCOLUMN字段名;ALTERTABLE表名DROPCOLUMNIFEXISTS字段名;-- 字段不存在时不报错ALTERTABLE表名DROPCOLUMN字段名CASCADE;-- 级联删除依赖对象(视图、外键等)
1.10 退出数据库
\q
二、数据库的操作 - 模式
2.1 查看模式
2.1.1 查看所有模式
# 列出所有模式\dn# 列出所有模式(含描述)\dn+
2.1.2 用SQL查询所有模式(包含内部模式)
SELECT*FROMsys_namespace;
2.1.3 查看当前使用的模式
SELECTcurrent_schema();
2.1.4 查看当前搜索路径(模式查找顺序)
SHOWsearch_path;
2.1.5 查看指定模式的表结构
\dt 模式名.*
2.2 创建模式
2.2.1 创建新的模式
CREATESCHEMA模式名;
2.2.2 创建模式并指定所有者
CREATESCHEMA模式名AUTHORIZATION用户名;
2.2.3 如果模式不存在则创建(防重复)
CREATESCHEMAIFNOTEXISTS模式名;
2.3 切换/设置模式
2.3.1 切换到指定模式(当前会话有效)
SETsearch_pathTO模式名;
2.3.2 设置多个搜索路径(按顺序查找)
SETsearch_pathTO模式1,模式2;
2.3.3 恢复默认搜索路径
SETsearch_pathTO"$user",public;
2.3.4 修改数据库的默认模式
ALTERDATABASE数据库名SETsearch_pathTO模式名;
2.3.5 修改用户的默认模式
ALTERUSER用户名SETsearch_pathTO模式名;
2.3.6 重置搜索路径为默认值
RESET search_path;
2.4 修改模式
2.4.1 重命名模式
ALTERSCHEMA模式名RENAMETO新模式名;
2.4.2 修改模式的所有者
ALTERSCHEMA模式名 OWNERTO新所有者;
2.5 删除模式
2.5.1 删除模式(模式必须为空)
DROPSCHEMA模式名;
2.5.2 删除模式及其所有对象(表、视图等)
DROPSCHEMA模式名CASCADE;
2.5.3 如果模式存在则删除
DROPSCHEMAIFEXISTS模式名;
2.5.4 默认行为,非空则报错
DROPSCHEMA模式名RESTRICT;
2.6 权限管理
2.6.1 授予模式的所有权限
GRANTALLONSCHEMA模式名TO用户名;
2.6.2 允许用户在该模式下创建对象
GRANTCREATEONSCHEMA模式名TO用户名;
2.6.3 允许用户使用该模式下的对象
GRANTUSAGEONSCHEMA模式名TO用户名;
2.6.4 收回模式的所有权限
REVOKEALLONSCHEMA模式名FROM用户名;
2.6.5 收回创建权限
REVOKECREATEONSCHEMA模式名FROM用户名;
2.7 在模式下操作表
2.7.1 在指定模式下创建表
CREATETABLE模式名.表名(...);
2.7.2 查看指定模式下的所有表
\dt 模式名.*
2.7.3 查看指定模式下某表的结构
\d 模式名.表名
2.7.4 删除指定模式下的表
DROPTABLE模式名.表名;
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-Z6-f/路径/表结构备份.dmp# 5. 排除日志表的数据(只导结构)sys_dump-U用户名-d数据库名 --exclude-table-data=sys_oper_log-f/路径/备份.sql# 6. 导出一个模式,用INSERT格式,每1000行提交一次sys_dump-U用户名-d数据库名-nsso--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 常用恢复命令
# 恢复纯文本SQLksql-Ukingbase-dmould-f./mould_backup.sql# 恢复自定义格式(可选择性恢复)sys_restore-Ukingbase-dmould ./mould.dmp# 恢复自定义格式,只恢复结构sys_restore-Ukingbase-dmould-s./mould.dmp# 恢复自定义格式,只恢复指定表sys_restore-Ukingbase-dmould-tusers./mould.dmp
# 需要先进入到库中\i/路径/备份.sql