-
一、前言在数据库中,游标(cursor)是一种非常重要的工具,用于在数据库查询结果集中进行定位和操作。游标提供了一种在多行数据结果集中逐行处理每一行的机制,允许开发人员对每一行的数据进行操作,如检索、过滤、修改等。本文将结合GaussDB数据库,简单的给大家做一介绍。二、概述(GaussDB)1、游标概述在GaussDB数据库中,为了处理SQL语句,存储过程进程分配一段内存区域来保存上下文联系。游标是指向上下文区域的句柄或指针。借助游标,存储过程可以控制上下文区域的变化。2、游标的使用分类游标的使用分为显式游标和隐式游标。对于不同的SQL语句,游标的使用情况不同。序号SQL语句游标1结果是多行的查询语句显式的2非查询语句隐式的3结果是单行的查询语句隐式 / 显式显式游标:显式游标主要用于对查询语句的处理,尤其是在查询结果为多条记录的情况下。隐式游标:对于非查询语句,如修改、删除操作,则由系统自动地为这些操作设置游标并创建其工作区,这些由系统隐含创建的游标称为隐式游标,隐式游标的名称为SQL,这是由系统定义的。游标循环:游标在WHILE语句、LOOP语句中的使用称为游标循环,一般这种循环都需要使用OPEN、FETCH和CLOSE语句。三、GaussDB中的显式游标(示例)1、显式游标的使用与操作步骤第一步,定义(声明)游标:定义一个游标名,以及与其相对应的SELECT语句。第二步,打开游标:执行游标所对应的SELECT语句,将其查询结果放入工作区,并且指针指向工作区的首部,标识游标结果集合。如果游标查询语句中带有FOR UPDATE选项,OPEN语句还将锁定数据库表中游标结果集合对应的数据行。第三步,提取游标数据:检索结果集合中的数据行,放入指定的输出变量中。第四步,对该记录进行处理。第五步,继续处理,直到活动集合中没有记录。第六步,关闭游标:当提取和处理完游标结果集合数据后,应及时关闭游标,以释放该游标所占用的系统资源,并使该游标的工作区变成无效,不能再使用FETCH语句获取其中数据。关闭后的游标可以使用OPEN语句重新打开。2、显式游标示例--给工资大于等于20000的员工降薪500。--复制一张测试表CREATE TABLE company2 AS TABLE company1;CREATE OR REPLACE PROCEDURE cursor_p()ASDECLAREv_id NUMBER(6);v_salary NUMBER(8,2);CURSOR c1 IS SELECT id, salary FROM company2;BEGINOPEN c1;LOOPFETCH c1 INTO v_id, v_salary;EXIT WHEN c1%NOTFOUND;IF v_salary>=20000 THENUPDATE company2 SET salary =salary - 500 WHERE id = v_id;END IF;END LOOP;CLOSE c1;END;/--执行存储过程CALL cursor_p();--查看,比对结果变化SELECT t2.*,t1.salary as "降薪前" FROM company2 t2 LEFT JOIN company1 t1 ON t2.id=t1.id ORDER BY ID ASC;游标属性说明:%NOTFOUND是游标的属性之一,用于控制程序流程或者了解程序的状态。此处的意思是,当最近的DML(数据操作语言)操作(如INSERT,UPDATE,DELETE等)没有影响任何行时,该属性为真。也就是说,如果对表执行的操作没有找到任何匹配的行,那么这个属性就会为真,'EXIT WHEN c1%NOTFOUND;' 就会执行。执行结果:四、GaussDB中的隐式游标(示例)1、隐式游标简介对于隐式游标的操作,如定义、打开、取值及关闭操作,都由系统自动地完成,无需用户进行处理。用户只能通过隐式游标的相关属性,来完成相应的操作。在隐式游标的工作区中,所存放的数据是最新处理的一条SQL语句所包含的数据,与用户自定义的显式游标无关。2、隐式游标示例--创建临时表,删除已离职的员工Allen,如果Allen已经不存在,则新增一条新员工信息(重名)CREATE TABLE company3 AS TABLE company1;CREATE OR REPLACE PROCEDURE cursor_p1()ASDECLAREv_name VARCHAR(10) := 'Allen';BEGINDELETE FROM company3 WHERE name = v_name;--根据游标状态做进一步处理IF SQL%NOTFOUND THENINSERT INTO company3 VALUES(4,v_name,24,'China',30000);END IF;END;/--执行CALL cursor_p1();--查看,比对执行结果SELECT *, 'company1' as "company1" FROM company1 WHERE NAME ='Allen'union allSELECT *, 'company3' as "company3" FROM company3 WHERE NAME ='Allen'游标属性说明:SQL%NOTFOUND 是GaussDB数据库中的一个属性,用于检查最近的 SQL 语句是否对数据库没有任何影响。如果 SQL 语句没有找到任何匹配的记录,那么这个属性就为真。所以,本段SQL中的IF SQL%NOTFOUND THEN 这一行代码的意思是:如果最近的 SQL 语句没有找到任何匹配的记录,那么就执行后续的代码。通常,这个语句用于处理 SQL 查询可能找不到数据的情况。执行结果:五、小结在GaussDB数据库中,游标主要用于执行复杂的查询语句、处理多行数据以及进行数据操作等场景。游标的使用可以提高程序的灵活性和可维护性,并且可以减少不必要的内存消耗。使用游标,开发人员可以灵活地控制查询结果集的遍历顺序和处理方式,以满足不同的业务需求。——结束
-
一、前言在本文中,我们将介绍GaussDB数据库中的用户定义函数重载的概念、用法以及示例。用户定义函数是 SQL 中常用的“编程工具”,允许我们自定义函数来处理和操作数据。而函数重载则是指在一个数据库中定义多个具有相同名字但参数不同的函数,以此实现不同的功能。二、函数重载的定义函数重载是一种允许在同一个数据库中定义多个同名函数的特性。这些同名函数在参数类型、数量或顺序上有所不同,因此可以根据传入的参数的不同来调用不同的函数。通过函数重载,我们可以使用相同的函数名字来实现多个功能,提高了代码的可读性和重用性。三、GaussDB创建自定义重载函数的事项说明兼容PostgreSQL风格的函数或者带有PACKAGE属性的函数支持重载。在指定REPLACE的时候,如果参数个数、类型、返回值有变化,不会替换原有函数,而是会建立新的函数。不能创建仅形参名字不同(函数名和参数列表类型都一样)的重载函数。不支持形式参数仅在自定义ref cursor类型和sys_refcursor类型不同的重载。不支持仅返回的数据类型不同的函数重载。不支持仅默认值不同的函数重载。重载的函数在调用时变量需要明确具体的类型。PACKAGE表示该函数是否支持重载。不允许package函数和非package函数重载或者替换。package函数不支持VARIADIC类型的参数。不允许修改函数的package属性。四、GaussDB数据库中的自定义重载函数示例使用函数重载,我们可以根据具体情况选择不同的函数来实现不同的功能,使代码更加简洁和可读。示例一:创建package属性重载函数,根据不同的SQL条件获取生成视图1、根据员工姓名(参数)获取员工信息--根据员工姓名(参数)获取员工信息CREATE OR REPLACE FUNCTION f_test1_overload(c_name VARCHAR)RETURNS VOID PACKAGELANGUAGE plpgsqlAS $$DECLAREs_sql TEXT;BEGINs_sql := 'CREATE OR REPLACE VIEW v_company1 AS SELECT * FROM company1 where name=''' || c_name || '''' ;EXECUTE s_sql;END $$;--调用select f_test1_overload('Allen');--查看执行结果select * from v_company1;调用结果:2、根据员工姓名或员工年龄获取员工信息--根据员工姓名或员工年龄获取员工信息CREATE OR REPLACE FUNCTION f_test1_overload(c_name VARCHAR,c_age INT)RETURNS VOID PACKAGELANGUAGE plpgsqlAS $$DECLAREs_sql TEXT;BEGINs_sql := 'CREATE OR REPLACE VIEW v_company2 AS SELECT * FROM company1 where name=''' || c_name || ''' OR age >= ''' || c_age || '''' ;EXECUTE s_sql;END $$;--调用select f_test1_overload('Allen',25);--查看执行结果select * from v_company2;调用结果:示例二:创建package属性重载函数,根据不同的参数求图形面积1、根据长和宽求面积--根据长和宽求面积CREATE OR REPLACE FUNCTION f_test2_overload(length INT, width INT)RETURNS INT PACKAGELANGUAGE plpgsqlAS $$BEGINRETURN length * width;END $$;--调用SELECT f_test2_overload(5,10)调用结果:2、根据半径求面积S=πr平方--根据半径求面积S=πr平方CREATE OR REPLACE FUNCTION f_test2_overload(radius INT)RETURNS FLOAT PACKAGELANGUAGE plpgsqlAS $$BEGINRETURN 3.14 * radius * radius;END $$;--调用SELECT f_test2_overload(10)调用结果:特别说明:需要注意的是,在数据库中实现自定义重载函数并不是一件必须的事情,因为数据库系统通常已经提供了丰富的内置函数和操作符,能够满足大部分数据处理需求。如果需要实现特殊的数据处理逻辑,可以先考虑使用内置函数和操作符来实现,如果无法满足需求再考虑自定义重载函数。五、小结在GaussDB数据库中,函数重载是一个重要特性,允许我们在同一个数据库中定义多个同名函数,根据参数的不同来调用不同的函数。通过函数重载,我们可以提高代码的可读性和重用性,实现多个功能在一个函数名下的统一管理。无论是根据参数类型、数量还是顺序的差异,函数重载都为我们提供了更多的灵活性和选择性。在应用函数重载时,我们应该注意避免定义过多重载函数导致混淆和冗余。合理使用函数重载可以提高代码的可维护性和可拓展性,使数据库应用更加高效和可靠。——结束
-
GaussDB上的数据迁移工具,哪个最快最安全?官方有提供迁移工具吗
-
GaussDB主备版,字段名称包含大写字母查询报错,需要加引号才能正常执行 执行正常:select "keyTab" from file_source 执行错误:select keyTab from file_source,提示字段不存在是否可以通过全局设置,在不加引号的情况下也能正常执行,如何进行设置?
-
初始用户 集群安装过程中自动生成的账户称为初始用户。初始用户也是系统管理员、监控管理员、运维管理员和安全策略管理员,拥有系统的最高权限,能够执行所有的操作。如果安装时不设置初始用户名称则该账户与进行安装的操作系统用户同名。如果在安装集群时不设置初始用户的密码,安装完成后密码为空,在执行其他操作前需要通过gsql客户端设置初始用户的密码。如果初始用户密码为空,则除修改密码外无法执行其他SQL操作以及升级、扩容、节点替换等操作。 初始用户会绕过所有权限检查。建议仅将此初始用户作为DBA管理用途,而非业务应用。系统管理员 系统管理员是指具有SYSADMIN属性的账户,默认安装情况下具有与对象所有者相同的权限,但不包括dbe_perf模式的对象权限和使用Roach工具执行备份恢复的权限。 要创建新的系统管理员,请以初始用户或者系统管理员用户身份连接数据库,并使用带SYSADMIN选项的CREATE USER语句或ALTER USER语句进行设置。安全管理员 安全管理员是指具有CREATEROLE属性的账户,具有创建、修改、删除用户或角色的权限。 要创建新的安全管理员,三权分立关闭时,请以系统管理员或者安全管理员身份连接数据库,三权分立打开时,请以安全管理员身份连接数据库,并使用带CREATEROLE选项的CREATE USER语句或 ALTER USER语句进行设置。审计管理员 审计管理员是指具有AUDITADMIN属性的账户,具有查看和删除审计日志的权限。 要创建新的审计管理员,三权分立关闭时,请以系统管理员或者安全管理员身份连接数据库,三权分立打开时,请以安全管理员身份连接数据库,并使用带AUDITADMIN选项的CREATE USER语句或 ALTER USER语句进行设置。监控管理员 监控管理员是指具有MONADMIN属性的账户,具有查看dbe_perf模式下视图和函数的权限,亦可以对dbe_perf模式的对象权限进行授予或收回。 要创建新的监控管理员,请以系统管理员身份连接数据库,并使用带MONADMIN选项的CREATE USER语句或 ALTER USER语句进行设置。安全策略管理员 安全策略管理员是指具有POLADMIN属性的账户,具有创建资源标签,脱敏策略和统一审计策略的权限。 要创建新的安全策略管理员,请以系统管理员用户身份连接数据库,并使用带POLADMIN选项的CREATE USER语句或 ALTER USER语句进行设置。逻辑集群管理员 逻辑管理员本质上仍然是普通用户,和普通用户相比,有如下额外权限:在所关联逻辑中创建、修改和删除资源池的权限。将所关联的逻辑的访问权限授予其他用户或角色,或回收其他用户或角色对关联逻辑的访问权限。
-
一、前言华为云GaussDB数据库是一款高性能、高安全性的云原生数据库,在GaussDB中,自定义函数是一个不容忽视的重要功能。本文将简单介绍一下自定义函数在GaussDB中的使用场景、使用优缺点、示例及示例解析等,为读者提供指导与帮助。二、自定义函数(Function)概述在SQL中,自定义函数(Function)是一种用于执行特定任务并返回结果的可重复使用代码块。Function可以接受参数,并且可以返回指定的结果等。 在GaussDB中,Function是数据库管理和开发人员的重要“工具”。通过Function,可以封装复杂的逻辑,以简化数据处理流程并提高工作效率。三、使用场景数据库中Function的使用场景包含但不限于以下,例如:数据处理:可以用于处理数据,如对字符串进行拆分、合并、替换、转换大小写等操作;对日期和时间进行格式化、计算时间差等操作;对数值进行计算、四舍五入、取整等操作;对布尔值进行逻辑操作等。聚合操作:可以用于对数据进行聚合操作,如计算平均值、总和、最大值、最小值等。条件判断:可以用于进行条件判断,如判断某个值是否满足特定条件,并返回相应结果。实现代码的重用和抽象:可以用于实现代码的重用,从而减少程序员编写重复代码的工作量,也可以用于实现代码的抽象。四、优缺点1、数据库中Function的使用优点执行速度快:只在创建时进行编译,以后每次执行都不需要再重新编译,而一般SQL语句每执行一次就要编译一次,因此使用函数可以提高数据库执行速度。操作简便:可以封装复杂的数据库操作,只需要一个函数调用就可以完成相应的操作,从而简化了数据库操作。可重用性高:可以重复使用,减少了数据库开发人员的工作量。提高系统安全性:可以设定只有特定用户才具有对指定函数的使用权,增强了数据库的安全性。2、数据库中Function的使用缺点调试困难:与SQL语句相比,函数在调试过程中更加困难。可移植性差:在不同的数据库系统中,函数的使用和语法可能有所不同,因此函数的可移植性较差。五、GaussDB中的Function示例与解析常见Function操作(创建、调用、删除等)1、示例一:定义函数为SQL查询--定义函数为SQL查询CREATE FUNCTION func_add_sql(integer, integer) RETURNS integerAS 'select $1 + $2;'LANGUAGE SQLIMMUTABLERETURNS NULL ON NULL INPUT;--调用SELECT func_add_sql(1,9);--DROPDROP FUNCTION func_add_sql;调用结果:解析说明:这段代码是在创建一个名为'func_add_sql'的SQL函数,这个函数接受两个整数作为输入参数,并返回它们的和。“CREATE FUNCTION”:这是一个SQL命令,用于创建新的函数。“func_add_sql”:这是创建的函数的名称。“RETURNS integer”:这指定了函数的返回类型为整数。“IMMUTABLE”:这是一个特性,表明这个函数总是返回相同的结果,当给定相同的输入时。也就是说,这个函数不依赖于任何外部状态或数据,它的结果不会变化。“RETURNS NULL ON NULL INPUT”:表明如果任何一个输入参数为NULL,函数将返回NULL。“LANGUAGE SQL”:这指定了函数用SQL语言编写。“'select $1 + $2;'”:这是函数的主体。$1和$2是参数引用,分别代表输入的两个参数。2、示例二:返回一个包含多个输出参数的记录--返回一个包含多个输出参数的记录。CREATE FUNCTION func_dup_sql(in int, out f1 int, out f2 text)AS $$ SELECT $1, CAST($1 AS text) || ' is text' $$LANGUAGE SQL;--调用SELECT * FROM func_dup_sql(10);--DROPDROP FUNCTION func_dup_sql;调用结果:解析说明:这个函数名为func_dup_sql,它接受一个输入参数(标记为in),并产生两个输出(标记为f1和f2)。函数体内部使用 $$ 标记代码块,里面是一个SELECT语句,它返回输入参数$1的两个不同形式的值。对于f1,它直接返回输入的整数值。对于f2,它将输入的整数值转换为一个文本字符串,并在其后添加字符串' is text'。这个转换是使用CAST函数完成的,它将$1从整数值转换为文本字符串。这个函数的语言是SQL,这表示它是在SQL的上下文中执行的。总的来说,这个函数接受一个整数作为输入,然后返回两个值:一个整数和一个由整数生成并添加了文本后缀的字符串。3、示例三:返回RECORD类型结果集--返回RECORD类型CREATE OR REPLACE FUNCTION compute(i int, out result_1 bigint, out result_2 bigint)returns SETOF RECORDas $$beginresult_1 = i + 1;result_2 = i * 10;return next;end;$$ language plpgsql;--调用SELECT compute(10);--DROPDROP FUNCTION compute;调用结果:解析说明:这是一个GaussDB数据库兼容PL/pgSQL自定义函数的定义。此函数名为compute,它接受一个整数参数i,并返回一个记录集,其中包含两个字段:result_1和result_2,它们都是大整数类型(bigint)。在函数的主体中,定义了以下操作:“result_1 = i + 1;”:将参数i加1后的结果赋值给result_1。“result_2 = i * 10;”:将参数i乘以10的结果赋值给result_2。“return next;”:返回结果集中的下一行。由于这个函数只返回了一行,所以这行将在第一次调用时返回。“$$ language plpgsql;”: 声明这个函数的编程语言是兼容PL/pgSQL。当调用这个函数时,你可以传入一个整数参数,它将返回一个结果集,其中包含一个记录,其result_1字段的值为输入的整数加1,result_2字段的值为输入的整数乘以10。六、小结总的来说,在GaussDB中,函数是一种强大且灵活的工具,它能帮助数据库管理和开发人员更有效地处理和操作数据,提高工作效率,并在数据查询、数据转换、数据过滤等场景中发挥出更大的作用。当然了,关于GaussDB数据库,除了上面的例子还有很多实践,例如:创建package属性的重载函数、通过语法“ALTER FUNCTION function_name …”修改函数、通过语法“DROP FUNCTION [ IF EXISTS ] function_name …”删除函数等,欢迎大家参考官网资料进行学习、测试!——结束
-
一、前言在SQL语言中,ETL(抽取、转换和加载)是一种用于将数据从源系统抽取到目标系统的过程。ETL过程通常包括三个阶段:抽取(Extract)、转换(Transform)和加载(Load)。但这些其实都脱离不了数据库系统,本节主要从GaussDB数据库生态出发,给大家简单讲一下SQL 与 ETL的过程与关系。二、SQL与ETL的概述SQL(结构化查询语言)SQL是一种用于管理关系数据库系统的标准编程语言(例如、MySql、GaussDB等)。它用于查询、插入、更新和删除数据库中的数据。SQL语言主要用于数据库管理系统的交互,它并不是一种通用的编程语言,而是专门设计用于操作关系数据库的。ETL(Extract-Transform-Load)ETL是一个过程,用于从源系统提取数据,将其转换为目标系统所需的格式,然后将其加载到目标系统库。ETL是数据集成的一部分,用于将分散的、不一致的数据整合到一起,然后通过统一的接口将数据传输到目标系统库进行分析和应用。ETL是数据库处理数据的重要环节,当在ETL过程中使用SQL时,通常涉及如下图操作。三、ETL过程中的SQL示例(GaussDB)本章节涉及到的SQL适用于GaussDB等数据库。1、提取(Extract)在ETL过程中,抽取是将数据从源系统中获取并传输到目标系统的第一步。这可能涉及到连接到数据库、读取文件、调用API等操作。在抽取数据时,需要考虑以下几个方面:数据源的选择:根据具体业务需求选择数据源,并考虑数据量、数据质量、数据类型等因素。抽取方式的选择:可以选择增量、全量更新等不同的抽取方式。数据抽取的调度:需要考虑时间、频率、并发等因素,以确保数据的及时性和准确性。常用SQL语句示例:1)全量(表)提取SELECT * FROM source_table;2)增量提取(例如,根据日期字段,按天、月、年提取,或其他维度)SELECT * FROM source_table WHERE t_date=’20230907’;Tip:根据业务需求提取全字段或者指定字段。2、转换(Transform)在ETL过程中,转换是对抽取的数据进行清洗、转换、过滤和格式化等操作,以满足目标系统的需求。转换的主要操作包括:数据清洗:包括去重、填充缺失值、异常值处理等操作,以确保数据的质量和准确性。数据转换:包括数据类型转换、字段计算、格式化等操作,以使数据符合目标系统的数据结构和数据类型。常用SQL语句示例:1)数据行去重 --数据行去重(随机保留或者优先保留)SELECT order_id, user, product, numberFROM (SELECT *,ROW_NUMBER() OVER (PARTITION BY order_id ORDER BY proctime ASC) as row_numFROM Orders)WHERE row_num = 1;参数说明:ROW_NUMBER(): 从第一行开始,依次为每一行分配一个唯一且连续的号码。PARTITION BY col1[, col2...]: 指定分区的列,例如去重的键。ORDER BY time_attr [asc|desc]: 指定排序的列。升序( ASC )排列指只保留第一行,而降序排列( DESC )则指保留最后一行。WHERE rownum = 1: 取ROW_NUMBER()生成的编号1。可参考上一篇文章:cid:link_02)字段清洗(例如:去空格)通过TRIM()、REPLACE()、CASE WHEN … THEN … END等关键字或函数进行异常字符处理。--清洗空格SELECT length(' 去空格 '),length(TRIM(' 去空格 ')),length(REPLACE(' 去空格 ',' ','')),length(CASE WHEN ' 去空格 ' <>'去空格' THEN '去空格' END);说明:Trim(),通过去空格函数进行清洗Replace(), 通过替换清洗case when … then …end 与字典表比对进行清洗,此处的与字典表比对省略,具体根据业务需求进行。3)非法日期清洗创建日历表calendar,存储19000101到30001231的所有日期,通过比对判断是否为合规的日期格式。--与字典表比对SELECT *,CASE WHEN create_date NOT IN (SELECT c_date FROM calendar) THEN 0 ELSE 1 END status FROM T1--剔除所有非法日期行DELETE FROM T1 WHERE status =0;Tip: 上文写法适合GaussDB等关系型数据库,且都是比较基础的示意说明,具体需要根据业务需要进行编写。3、加载(Load)在ETL过程中,加载是将转换后的数据加载到目标系统中,通常是数据仓库或数据集市。加载的主要操作包括:数据映射。将转换后的数据映射到目标系统中,包括表、字段等。数据加载。将转换后的数据加载到目标系统中,并进行数据校验、数据整合等操作。常用SQL语句示例:1)增量表(累加,字段、表一 一映射)INSERT INTO target_table (column1, column2, column3) SELECT column1, column2, column3 FROM source_table;2)全量表(全删全插,字段、表一 一映射)--情况目标表TRUNCATE table target_table;--全量插入INSERT INTO target_table (column1,column2,…) SELECT column1,column2,… FROM source_table;3)作业重跑,清空指定分区数据,重新加载--清理表分区的数据--清空分区etl_dateALTER TABLE orders TRUNCATE PARTITION etl_date;--或者清空分区etl_date=20230911。ALTER TABLE orders TRUNCATE PARTITION for (20230911);--插入新数据INSERT INTO target_table (column1,column2,…,etl_date) SELECT column1,column2,…,etl_date FROM source_table;Tip:数据加载涉及到的算法及表设计非常复杂,例如,涉及历史拉链表(关链、开链)、全量表(全删全插)、增量表(累加)等。设计时需要从数仓/数据集市的全局架构出发,确保合理、准确、高效等。四、附DataArts Studio介绍华为云GaussDB相关的生态工具DataArts Studio数据治理中心是一个强大的ETL工具和技术,它可以帮助开发人员设计、编写和管理ETL脚本。以下是DataArts Studio在这些方面的主要功能和优势:可视化的ETL设计:DataArts Studio提供了一个直观的可视化界面,使开发人员能够以图形化方式设计和配置ETL流程。通过拖放组件和连接线,开发人员可以轻松定义数据提取、转换和加载的步骤,而无需编写复杂的代码。内置的数据转换和处理功能:DataArts Studio提供了丰富的内置转换和处理组件,如数据清洗、数据格式转换、数据合并、数据计算等。开发人员可以直接使用这些组件,而无需自行编写转换逻辑,从而加快开发速度并减少错误。强大的数据连接和集成能力:DataArts Studio支持与各种数据源的连接和集成,包括关系型数据库、文件系统、云存储、API接口等。开发人员可以轻松地配置数据源连接,并直接从这些数据源中提取数据。可扩展的脚本编写和管理:虽然DataArts Studio提供了可视化的ETL设计界面,但它也支持自定义脚本编写。开发人员可以使用内置的脚本编辑器编写自定义的ETL脚本,以满足特定的需求。此外,DataArts Studio还提供了ETL脚本的版本控制和管理功能,方便团队协作和脚本的维护。实时监控和调试:DataArts Studio提供了实时监控和调试功能,开发人员可以实时查看ETL流程的执行状态、数据处理的结果和错误信息。这有助于快速发现和解决问题,提高ETL脚本的质量和可靠性。五、小结SQL与ETL的关系在于,SQL语言通常用于ETL过程中的数据提取和转换阶段。通过使用SQL查询语句,可以从源数据库中提取所需的数据,然后使用SQL语句对数据进行必要的转换和处理,以便将其加载到目标系统。当然了,现在好多企业都有专门的ETL工具,但其实后台都是通过类似“PYTHON + SQL”、“PERL + SQL”等方式实现的,其重点在于ETL过程中的SQL处理。 同样,在GaussDB数据库生态中也是不可或缺的,掌握GaussDB数据库相关的SQL写法必不可少。——结束
-
通过GRANT把角色授予用户后,用户即具有了角色的所有权限。推荐使用角色进行高效权限分配。例如,可以为设计、开发和维护人员创建不同的角色,将角色GRANT给用户后,再向每个角色中的用户授予其工作所需数据的差异权限。在角色级别授予或撤消权限时,这些更改将作用到角色下的所有成员。 GaussDB提供了一个隐式定义的拥有所有角色的组PUBLIC,所有创建的用户和角色默认拥有PUBLIC所拥有的权限。关于PUBLIC默认拥有的权限请参考GRANT。要撤销或重新授予用户和角色对PUBLIC的权限,可通过在GRANT和REVOKE指定关键字PUBLIC实现。 要查看所有角色,请查询系统表PG_ROLES:创建、修改和删除角色非三权分立时,只有系统管理员和具有CREATEROLE属性的用户才能创建、修改或删除角色。三权分立下,只有初始用户和具有CREATEROLE属性的用户才能创建、修改或删除角色。要创建角色,请使用CREATE ROLE。要在现有角色中添加或删除用户,请使用ALTER ROLE。要删除角色,请使用DROP ROLE。DROP ROLE只会删除角色,并不会删除角色中的成员用户账户。内置角色提供了一组默认角色,以gs_role_开头命名。它们提供对特定的、通常需要高权限的操作的访问,可以将这些角色GRANT给数据库内的其他用户或角色,让这些用户能够使用特定的功能。在授予这些角色时应当非常小心,以确保它们被用在需要的地方。表1描述了内置角色允许的权限范围:关于内置角色的管理有如下约束:以gs_role_开头的角色名作为数据库的内置角色保留名,禁止新建以“gs_role_”开头的用户/角色/模式,也禁止将已有的用户/角色/模式重命名为以“gs_role_”开头;禁止对内置角色的ALTER和DROP操作;内置角色默认没有LOGIN权限,不设预置密码;gsql元命令\du和\dg不显示内置角色的相关信息,但若显示指定了pattern为特定内置角色则会显示。三权分立关闭时,初始用户、具有SYSADMIN权限的用户和具有内置角色ADMIN OPTION权限的用户有权对内置角色执行GRANT/REVOKE管理。三权分立打开时,初始用户和具有内置角色ADMIN OPTION权限的用户有权对内置角色执行GRANT/REVOKE管理。
-
存一些比较大的txt文件到GaussDB中,请问用CLOB性能好,还是BLOB性能好
-
GaussDB归档后的数据怎么查询
-
GaussDB能否通过配置,自动对数据进行归档
-
GaussDB数据量比较大的话,是否也需要像mysql一样去做分区分库
-
GaussDB有没有AES、3DES这种对称加密的原生函数
-
GaussDB 有没有计算MD5的函数
-
让技术触达每一个角落,赋能更多的人华为云数据库现推出【分享回帖赢好礼】活动在这里你可以呼朋引伴,一起来集赞也可以谈天论地,成为技术咖参与方式任你选快来邀你的小伙伴一起参加吧~活动时间:2024/5/28-6/17参与方式:方式1:呼朋引伴,来集赞步骤一:转发技术文《LLVM技术在GaussDB等数据库中的应用》到朋友圈,20人点赞;步骤二:将集赞的分享页截图, 在本帖下方盖楼互动;下方评论区回帖:华为云账号+朋友圈分享页面截图方式2:谈天论地,你是技术咖基于《LLVM技术在GaussDB等数据库中的应用》技术文,发表您的看法,在本帖下方进行提问或评论均可。注:以上2个参与方式,盖楼评奖相互独立(前提,方式2的有效回帖条数≥20),否则两种参与方式一起开奖;参与方式1截图回帖的用户,每个ID有效盖楼数量≤3条,超过3条的以前3条为准;开奖条件,有效盖楼数量≥100。活动奖励:奖励奖励及规则:1、盖楼≥100层,有效楼层数的5%、15%、25%、35%、45%、55%、65%、85%、95% 将会获得GaussDB字母笔/炫彩马卡龙指甲刀;2、盖楼>100层&盖楼≤200层,每增加10个楼层,增加一个抽奖名额,有效楼层数的1%、11%、21%、31%、41%、51%、61%、71%、81%、91%将会获得奖品新贵族系列中性笔/平装套芯笔记本;3、盖楼>200层&盖楼≤300层,每增加10个楼层,增加一个抽奖名额,有效楼层数的5%、10%、20%、30%、40%、50%、60%、70%、80%、90%,将会获得华为云定制短袖/卫衣;4、盖楼>300层,每增加20个楼层,增加一个抽奖名额,有效楼层数的10%、30%、50%、80%、90%将会获得HUAWEI mini蓝牙音箱_绮境森林/《华为数据之道》书籍;5、盖楼>400层,将随机抽取一名幸运用户,有效楼层数的88%将会获得华为定制背包一个;注:总有效楼层数乘以指定中奖百分比后,四舍五入,确定最终获奖楼层;例如:若总楼层数为199,中奖楼层为21%,199x 21%= 41.79,则四舍五入后中奖楼层为42楼。获奖楼层重复,按最高奖品进行发放,不重复奖励参与规则:1. 同一ID可参与两种活动方式,但两种方式各自的有效盖楼数量≤3次;2. 同一ID自问自答算一条有效盖楼;活动注意事项:1、请务必按照上述要求提交内容,灌水/无效/违规的内容不参与活动奖励;2、禁止复制他人内容,如发现根据发布时间优先的人获得奖励;3、活动结束后十五个工作日内公布积分排名情况及获奖名单,届时请及时关注并填写奖品收件信息;4、本活动最终解释权归华为云所有。
上滑加载中
推荐直播
-
华为云码道Agent集成与鸿蒙实战2026/08/11 周二 19:00-21:00
王一男-华为云码道产品规划专家;李炎-华为云码道产品专家;彭江敏-华为云鸿蒙端云一体化开发专家
本次直播带你解读华为云码道7月份产品新特性、新功能。更有专家演示码道Agent Space × 钉钉机器集成实战,从0到1打通消息通道;码道鸿蒙端云一体化实战,快速搭建员工签到系统。
回顾中 -
华为云开发者AI素养直播课·第五期2026/09/04 周五 16:00-18:00
林华鼎-华为云AI开发者运营负责人;蒋春阳-华为云AI开发者案例开发专家
本期直播内容: AI工具体验营 · 第5-8课连讲。Agent-Team 多智能体协作完成毕业设计实践
回顾中 -
华为云开发者AI素养ClassRoom·第六期2026/09/08 周二 19:00-20:00
樊渊-2026华为软件挑战赛冠军
高手来了:看软挑高手解析二维排样问题—从工业难题到算法突破
回顾中
热门标签