欢迎光临
我们一直在努力

【Linux】人大金仓数据库常用命令、SQL

👨‍🎓博主简介

  🏅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

赞(0)
未经允许不得转载:171主机测评 » 【Linux】人大金仓数据库常用命令、SQL
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址