实用指南:【金仓数据库】ksql 指南(二) —— 创建与管理本地数据库

news/2025/11/4 11:10:21/文章来源:https://www.cnblogs.com/yangykaifa/p/19189548

引言

掌握了 ksql 对接本地 KingbaseES 数据库的基本操作之后,接下来要学习的是“数据库自身的运作”,数据库是数据存储的顶级容器,所有的表,视图等对象均依托数据库而存在,本文将会细致阐述怎样经由 ksql 命令行来完成本地数据库从“创建,查看,切换到删除”的全部操作,各个步骤均配有具体的实例以及需要注意的地方,从而保证初学者能够顺利实施。

一、前置条件:明确 “在哪操作”—— 权限库与连接状态

创建或者管理数据库之前,要先明确两件事,其一,要连上正确的“权限库”,各个模式所要求的不尽相同,其二,当前用户需具备足够的权限,创建数据库就要有CREATEDB权限,这在文档里被一再提及,也是防止操作出现错误的重要因素。

1.1 确认连接到 “权限库”

KingbaseES 支持不同兼容模式,不同模式下创建数据库的 “权限库” 要求不同,必须严格区分:

1.2 确认当前用户权限(避免 “权限不足” 报错)

创建数据库时,用户应具有 CREATEDB 权限(系统默认管理员用户 system 拥有该权限,普通用户则要手动获取),可经由如下命令来查看当前用户的权限

\du 用户名

示例(查看 system 用户权限):

\du system

image.png

执行之后在属性栏当中,如果存在“创建 DB”,就表明具备创建数据库的权限;倘若不存在,则须要管理员(比如 system)运行下面的命令予以授予(以普通用户 user1 为例)

ALTER USER user1 CREATEDB;

在完成授权之后再度查看,确保“创建 DB”的权限得以落实。

二、创建本地数据库:两种核心方式(语句 / 工具)

KingbaseES 提供 “SQL 语句” 和 “命令行工具” 两种创建数据库的方式,前者灵活支持自定义配置(如编码、表空间),后者更简洁快速,可根据场景选择。

2.1 方式一:采用 CREATE DATABASE 语句来创建数据库(此方法较为推荐,比较灵活)

CREATE DATABASE 属于 SQL 标准语句,经由“选项”可以自定义数据库属性(譬如编码,默认表空间等),相关文档给出了基本语法及范例,下面是对这些内容的具体分析。

2.1.1 基础语法
CREATE DATABASE 数据库名 [WITH 选项];

其中 “选项” 可选,常用选项包括:

  • ENCODING '编码格式':指定数据库字符编码(如 UTF8,避免中文乱码);

  • TABLESPACE 表空间名:指定数据库默认表空间(需提前创建表空间,后续文章讲解);

  • OWNER 用户名:指定数据库所有者(默认是当前创建用户)。

2.1.2 基础示例:创建空白数据库

system 用户身份切换到普通模式并创建一个名为 temp_db 的空白数据库,相关命令如下:

CREATE DATABASE temp_db;

image.png

执行之后若是出现 CREATE DATABASE 这个提示,就说明创建已经完成(没有错误提示就算成功),ksql 对于完成的 DDL 语句只会返回操作类型,并不会显示其他内容

2.1.3 进阶示例:指定编码创建(避免中文乱码)

如果打算存储中文数据,最好指定 UTF8 编码,可以参考下面这个命令

CREATE DATABASE temp_db WITH ENCODING 'UTF8';

image.png

执行该命令之后,再运行“查看数据库详情”这样的命令,就可以验证编码是否被正确设置。

2.2 方式二:用 createdb 工具创建(快捷,适合简单场景)

createdb 是 KingbaseES 暴露出来的命令行工具,实际上是 CREATE DATABASE 语句的一种“封装”,不用进入 ksql 交互模式就能创建数据库,比较适合用来快速创建一些简单的数据库。

2.2.1 基础语法
createdb -U 用户名 -d 父数据库 新数据库名 [选项]

参数说明:

  • -U 用户名:指定执行创建操作的用户(需有 CREATEDB 权限);
  • -d 父数据库:指定 “模板库”(默认用 kingbase 库作为模板,普通模式)或 master 库(SQLServer 兼容模式);
  • 新数据库名:要创建的数据库名称;
  • 选项:与 CREATE DATABASE 一致(如 -E UTF8 指定编码)。
2.2.2 示例:用 createdb 快速创建数据库

在 Linux 终端(无需进入 ksql),用 system 用户基于 kingbase 库创建 temp_db,命令如下:

createdb -U system -d kingbase temp_db -E UTF8

执行后若无报错,说明创建成功(createdb 工具成功时无返回信息,报错时才会提示)。

2.2.3 注意事项
  • createdb 工具需在 “系统终端” 执行(Linux 终端、Windows 命令提示符),而非 ksql 交互模式;
  • 若执行 createdb 时提示 “command not found”,需先配置 KingbaseES 的环境变量(将 安装目录/Server/bin 路径添加到 PATH 中)。

三、查看本地数据库:了解当前数据库列表与详情

创建数据库之后,要经由 ksql 命令来查看“全部数据库列表”和“单个数据库详情”,以此确认创建情况或者管理已有的数据库,包括 \l 一系列命令,属于最为常见的查看方法。

3.1 查看所有数据库列表(\l 命令)

在 ksql 交互模式里,运行如下指令,就能显示本地各个数据库的关键信息(包含名称,所有者,编码,权限等等)。

\l

执行后会显示类似以下的表格(示例):
image.png

表格中关键信息解读:

  • 名称:数据库名称(确认 temp_db 已存在);
  • 字符编码:字符编码(确认是否为 UTF8);
  • 拥有者:数据库所有者(确认是否为当前用户)。

3.2 筛选查看特定数据库(\l 数据库名称)

如果本地数据库数量较多,可以凭借“数据库名称”立即找到目的数据库,其语法表现为如下形式。

\l 数据库名称

示例:筛选名称为 “temp_db” 的数据库

\l temp_db

image.png

3.3 查看单个数据库详情(\l+ 命令)

如果想要知道数据库有关“存储路径,大小,表空间”等细致情况,就要运行如下命令(在 \l 后面加上 +)。

\l+ 数据库名

示例:查看 temp_db 的详情:

\l+ temp_db

执行后会显示类似以下的信息:

image.png

四、切换本地数据库:在不同库间灵活跳转

切换本地数据库:要操作不同数据库的时候,比如从 kingbase 切换到 temp_db,不必断开连接再重新登录,只要用 \c 命令就能马上完成切换,kingbaseES文档里清楚地记载了这个命令的用法。

4.1 切换命令语法

\c 目标数据库名 [用户名]
  • 目标数据库名:要切换到的数据库(必须已存在);
  • 用户名(可选):若需切换用户,可在后面加用户名(如 \c temp_db user1),默认保持当前用户。

4.2 切换示例:从test 切换到 temp_db

当前连接 test 库(提示符为 test=#),执行以下命令切换到 temp_db

\c temp_db

执行后若提示以下信息,说明切换成功:

image.png

同时,ksql 的提示符会从 test=# 变为 temp_db=#,直观体现当前连接的数据库。

4.3 注意事项

  • 切换数据库之前,如果当前库存在尚未提交的事务,比如未执行 COMMITINSERT 操作,那么在切换的时候会自动回滚该事务,所以事先要确认数据是否已被保存。
  • 目标数据库若不存在,将会出现“database does not exist”这条错误信息,此时要核查数据库名的拼写是否正确。

五、删除本地数据库:谨慎操作,避免数据丢失

谨慎执行删除本地数据库的操作,防止造成数据丢失,删除数据库属于“高危操作”,其会把数据库中的全部表以及数据彻底删除,文档特意提示了“删除前的确认流程”和“需注意的语法事项”,下面就是安全删除的完整步骤。

5.1 前提:不能连接到要删除的数据库

这是反复强调的关键点 ——无法删除当前正在连接的数据库,否则会报错
image.png

因此,删除前需先切换到其他数据库(如 kingbase 或 master),示例:
若当前连接 temp_db,先切换到 kingbase

\c kingbase

确认提示符变为 kingbase=# 后,再执行删除操作。

5.2 删除命令语法

为避免误删,建议加上 IF EXISTS 选项(若数据库不存在,仅提示警告,不报错),语法如下:

DROP DATABASE [IF EXISTS] 数据库名;
  • IF EXISTS:可选,防止 “删除不存在的数据库” 报错;
  • 数据库名:要删除的数据库(必须已切换到其他库)。

5.3 删除示例:安全删除 temp_db

DROP DATABASE IF EXISTS temp_db;

执行后若提示 DROP DATABASE,表示删除成功
image.png

5.4 高危操作提醒(必看)

  1. 备份优先 删除之前,要确认数据库里没有重要数据,或者已经做了备份(KingbaseES 的备份能够用 pg - dump 工具来完成,后面的文章会讲述)。
  2. 避免生产环境误删:生产环境切勿误删数据库,若要在生产环境删除数据库,则要经过审批流程,建议先利用\l+查看数据库详情,之后再予以删除。
  3. 无法恢复:KingbaseES 没有“回收站”功能,删除的数据无法直接恢复,只能依靠备份

六、常见问题排查:解决创建 / 删除数据库的高频报错

在数据库运作时,常常会碰到创建或者删除数据库时报错的情况,下面列举了三种典型的错误及其解决办法,供新手参考来定位并解决问题。

问题 1:报错 “创建数据库的权限被拒绝”

报错完整信息:

ERROR:  permission denied to create database

原因:

当前用户没有 CREATEDB 权限(如普通用户 user1 未授予权限)。

解决方案:

  1. 切换到管理员用户 system\c kingbase system);
  2. 执行授权命令:ALTER USER 用户名 CREATEDB;(如 ALTER USER user1 CREATEDB;);
  3. 切换回原用户(\c kingbase user1),重新执行创建命令。

问题 2:删除报错 “数据库正被其他用户访问”

报错完整信息:

ERROR:  database "temp_db" is being accessed by other users
DETAIL:  There are 2 other sessions using the database.

原因:

有其他会话(如其他终端的 ksql 连接)正在使用要删除的数据库,无法删除。

解决方案:

  1. 查看当前连接 temp_db 的会话:

    SELECT pid, usename, application_name FROM pg_stat_activity WHERE datname = 'temp_db';

    其中 pid 是会话进程 ID;

  2. 终止这些会话(需管理员权限):

    SELECT pg_terminate_backend(进程ID);

    示例:终止 pid 为 1234 的会话:SELECT pg_terminate_backend(1234);

  3. 确认无其他会话后,重新执行删除命令。

问题 3:报错 “无法删除当前打开的数据库”

报错完整信息:

ERROR:  cannot drop the currently open database

原因:

当前 ksql 会话正在连接要删除的数据库(如要删除 temp_db,但当前连接的就是 temp_db)。

解决方案:

  1. 切换到其他数据库(如 kingbase):\c kingbase
  2. 再次执行删除命令:DROP DATABASE IF EXISTS temp_db;

总结

本文包含本地数据库的“创建,查看,切换,删除”操作,先做“权限库确认”的前置准备,然后灵活选择两种创建方式,最后注意安全删除时的事项,各个环节均符合文档规范,并附有实际操作案例,掌握了这些操作之后,你就具有了管理 KingbaseES 数据存储“顶层容器”的能力,下篇文章将会详细阐述“表空间与模式”的管理,从而更为细致地剖析数据存储的逻辑和物理结构。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/955465.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2025年移动厕所厂家推荐:荣东智能环保领跑行业

文章摘要 本文针对2025年移动厕所厂家推荐需求,深入分析用户选择痛点,重点介绍合肥荣东智能环保科技有限公司的核心优势。荣东品牌拥有ISO认证、全国18家生产基地、年产量超10000个产品,并服务过淮南寿县文旅、中铁…

CF1780E Josuke and Complete Graph

考虑一个数 \(x\) 能够计入答案要满足什么条件,即存在一组 \(\gcd(a,b)=x\)。等价于 \(x|a,x|b,\gcd(\frac{a}{x},\frac{a}{x})=1\)。 贪心的想要满足 \(l\le a,b\le r\),那么 \(a\) 取最小的满足能整除 \(x\) 的数即…

线程组查看结果树与聚合报告

基础HTTP GET接口请求测试操作步骤:打开JMeter,新建测试计划,右键添加“线程组”(线程数1、循环次数1)。线程组下添加“HTTP请求”,服务器名称/IP填写httpbin.org,端口80,请求方法选GET,路径填写/get。添“察…

详细介绍:Oracle OCP认证考试题目详解082系列第46题

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

2025年香菇品牌推荐与源头厂家排行权威指南

摘要 香菇行业在2025年持续蓬勃发展,随着消费者对健康食品需求的增长,优质香菇品牌和源头厂家成为市场焦点。本文基于权威数据和用户口碑,为您呈现香菇品牌、源头厂家、供货商及加工厂的TOP10排名,帮助您做出明智选…

集采压境,数字化转型如何成为国产医疗器械厂商的突围利器?

当价格空间被政策压缩,服务效率与协同能力正成为医疗器械企业新的竞争壁垒。当价格空间被政策压缩,服务效率与协同能力正成为医疗器械企业新的竞争壁垒。 “同样的产品,同样的质量,为什么医院最终选择了别人?”一…

2025年香菇品牌推荐排行榜前十强

摘要 香菇行业在2025年持续增长,随着健康饮食意识的提升,市场需求不断扩大。本文基于权威数据和用户口碑,为您呈现香菇品牌、源头厂家、供货商和加工厂的排行榜前十名,旨在帮助消费者和采购商做出明智选择。榜单综…

C++中的 std::call_once() - Hello

C++中的 std::call_once()一、简介 多线程并发只执行一次。二、实验#include <iostream> #include <thread> #include <mutex>//用法1: std::once_flag o_flag; void init_func() {std::cout <&l…

jemter接口测试1、2、3

1. 基础HTTP GET接口请求测试 操作步骤:1. 打开JMeter,新建测试计划,右键添加“线程组”(线程数1、循环次数1)。2. 线程组下添加“HTTP请求”,服务器名称/IP填写httpbin.org,端口80,请求方法选GET,路径填写/…

2025年11月洗地机产品推荐:前吸后拖对比榜与促销价排行

把“买洗地机”这件事拆开看,大多数家庭的核心场景其实只有三个:一是孩子吃饭掉渣、宠物掉毛后,希望十分钟内把地板恢复到“能光脚”的状态;二是周末大扫除,想一次推拉就完成“吸尘+拖地+擦干”,省得先扫后拖腰…

单个线程提交

第一步:打开jmeter,右击“测试计划”——“添加”——“线程组” 第二步:右击“线程组”——“添加”——“HTTP请求” 第三步:在“协议”中输入“HTTP”,在“服务器名称IP”中输入“httpbin.org”,端口号为80,请…

2025年人气正宗地道粤菜餐厅新排行榜推荐

在追求正宗、地道粤菜风味的道路上,食客们常常面临诸多选择难题。市场上粤菜餐厅众多,但真正能做到食材鲜、味道正、价格优、服务好的却屈指可数。为了帮助大家精准筛选优质的粤菜餐厅,我们特别推出这份2025年人气正…

2025.11.04

关于jmeter,右键testplan,添加-线程-线程组,右键线程组-添加-取样器-htttp活动 右击--线程—线程组 右击线程组--添加--取样器—http请求 右击http请求—添加—配置元件—http信息头管理器

10.28jemeter依赖于java环境,jemeter安装

1.安装jemeter,配置JAVA_HOME环境 配置环境: 1.在我的电脑-高级设置-环境配置-新建-在path里新建-新建-确定 ![img](file:///D:\文档\Tencent Files\489754294\nt_qq\nt_data\Pic\2025-10\Ori\c6e5b8e7c2274eb7f193d…

2025年11月素材平台对比榜:高品卓特等十强排名全评价

2025年11月,当用户搜索“素材平台”时,往往处在内容生产的关键节点:短视频剪辑师需要在版权安全的前提下快速找到4K航拍;新媒体运营要在节日热点前拿到可商用的国潮插画;企业市场部则希望一次性打包全年视觉方案,…

2025年变压器油滤油机供应商及抗燃油滤油机厂家排名解析

在工业油品净化领域,滤油机设备的质量和性能至关重要。以下为您介绍2024年排名靠前的滤油机设备生产厂家,其中包括变压器油滤油机供应商和抗燃油滤油机厂家。 一、长沙市湘能滤油机制造有限公司 - TOP1 推荐指数:★…

10.20.21(请求,响应结构)

composer:请求编辑 1.用途2.大小/速度3.安全性4.数据 get:1.只读不改服务器参数,2.小,传的少,快,3.安全性低,4.参数明文暴露 post:1.更改服务器参数,2.大,传的多,慢,3.安全性高,4.参数相对隐蔽 自己生成请求…

2025年披萨生产线供应商推荐,不错的披萨生产线工厂及加工厂排名解析

2024 年食品加工行业蓬勃发展,披萨生产线作为面食规模化生产的关键设备,其性能优劣直接关系到企业的生产效率与产品品质。然而当前市场上,披萨生产线供应商众多且水平参差不齐:部分供应商技术滞后,生产线难以处理…

2025年11月市场地位认证机构对比榜:尚普与华信人权威排名解析

“到底该找谁做市场地位认证?”——这是2025年四季度品牌部、融资部、法务部开会时最常出现的疑问。企业计划冲刺年底招商、筹备来年路演、更新电商详情页,都需要一张能被平台、投资人、监管方同时认可的“第三方地位…

详细介绍:【AI大模型】WPS 接入DeepSeek 实战项目详解

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …