华为云用户手册

  • 事务相关的GUC参数 表2 事务相关的GUC参数差异 GUC参数 功能 差异 autocommit 设置事务自动提交模式。 - transaction_isolation 在 GaussDB 中是设置当前事务的隔离级别。 在MySQL中是设置会话级事务的隔离级别。 GaussDB中,通过使用SET命令,只能改变当前事务的隔离级别。如果想要改变会话级的隔离级别,可以使用default_transaction_isolation。在MySQL中,通过使用SET命令,可以改变会话级的事务隔离级别。 支持范围差异。 MySQL中,支持以下隔离级别设置,对大小写不敏感,对空格敏感: READ-COMMITTED READ-UNCOMMITTED REPEATABLE-READ SERIALIZABLE GaussDB中,支持以下隔离级别设置,对大小写和空格敏感: read committed read uncommitted repeatable read serializable default (设置和会话中默认隔离级别一样) 设置m_format_dev_version = 's2'时,支持MySQL的隔离级别设置。 在GaussDB中,新事务的transaction_isolation值将被初始化为default_transaction_isolation的值。 设置m_format_dev_version = 's2'时: 以下语句是设置下一个事务特性:set @@transaction_isolation = value; set transaction isolation level value。 以下语句修改会话级事务特性:set [local|session|@@session.] transaction_isolation = value。 下一个事务特性不允许在事务内使用,如果隐式事务报错,即单个SQL语句报错,继续保持下一个事务特性。 tx_isolation 设置事务的隔离级别; tx_isolation和transaction_isolation是同义词。 GaussDB中只支持查询,不支持修改。 default_transaction_isolation 设置事务的隔离级别。 GaussDB中通过SET设置会改变会话级事务隔离级别。 MySQL中不支持该系统参数。 transaction_read_only 在GaussDB中是设置当前事务的访问模式。 在MySQL中是设置会话级事务的访问模式。 在GaussDB中,通过使用SET命令,只能改变当前事务的访问模式。如果想要改变会话级的访问模式,可以使用default_transaction_read_only。 在MySQL中,通过使用SET命令,可以改变会话级的事务隔离级别。 在GaussDB中,新事务的transaction_read_only值将被初始化为default_transaction_read_only的值。 设置m_format_dev_version = 's2'时: 以下语句是设置下一个事务特性:set @@transaction_read_only = value; set transaction {read write | read only}。 以下语句修改会话级事务特性:set [local|session|@@session.] transaction_read_only = value。 下一个事务特性不允许在事务内使用,如果隐式事务报错,即单个SQL语句报错,继续保持下一个事务特性。 tx_read_only 设置事务的访问模式。tx_read_only和transaction_read_only是同义词。 GaussDB中只支持查询,不支持修改。 default_transaction_read_only 设置事务的访问模式。 GaussDB中通过SET设置会改变会话级事务访问模式;MySQL中不支持该系统参数。
  • 隐式提交的语句 M-Compatibility使用GaussDB存储,继承GaussDB事务机制,事务中执行DDL、DCL不会自动提交。 MySQL在DDL、DCL、管理类语句,锁相关语句会自动提交。 -- M-Compatibility创建表和设置GUC参数可以回滚掉。 m_db=# DROP TABLE IF EXISTS test_table_rollback; m_db=# BEGIN; m_db=# CREATE TABLE test_table_rollback(a int, b int); m_db=# \d test_table_rollback; m_db=# ROLLBACK; m_db=# \d test_table_rollback; -- 不存在该表。
  • 标识符 M-Compatibility模式下标识符存在以下差异: GaussDB无引号标识符中不支持以美元符号($)开头,MySQL无引号标识符中支持。 GaussDB无引号标识符中的支持大小写敏感的数据库对象。 GaussDB标识符支持U+0080~U+00FF扩展字符,MySQL标识符支持U+0080~U+FFFF的扩展字符。 无引号标识符中,GaussDB不支持创建以数字开头包含一个e或E结尾作为标识符的表,例如: -- GaussDB报错不支持,MySQL支持 m_db=# CREATE TABLE 23e(c1 int); ERROR: syntax error at or near "23" LINE 1: CREATE TABLE 23e(c1 int); ^ m_db=# CREATE TABLE t1(23E int); ERROR: syntax error at or near "23" LINE 1: CREATE TABLE t1(23E int); ^ 有引号标识符中,GaussDB对于创建了列名为纯数字或科学计算法的表,不支持直接使用,需要在引号中使用;对于点操作符(.)场景,列名为纯数字或科学计算法的表也需要在引号中使用。例如: -- 创建列名为纯数字或科学计算法的表 m_db=# CREATE TABLE t1(`123` int, `1e3` int, `1e` int); CREATE TABLE -- 向表中插入数据 m_db=# INSERT INTO t1 VALUES(7, 8, 9); INSERT 0 1 -- 结果非预期,但与MySQL结果一致 m_db=# SELECT 123 FROM t1; ?column? ---------- 123 (1 row) -- 结果非预期,但与MySQL结果一致 m_db=# SELECT 1e3 FROM t1; ?column? ---------- 1000 (1 row) -- 结果非预期,并且与MySQL结果不一致 m_db=# SELECT 1e FROM t1; e --- 1 (1 row) -- 正确用法 m_db=# SELECT `123` FROM t1; 123 ----- 7 (1 row) m_db=# SELECT `1e3` FROM t1; 1e3 ----- 8 (1 row) m_db=# SELECT `1e` FROM t1; 1e ---- 9 (1 row) -- 点操作符的场景,GaussDB不支持,MySQL支持 m_db=# SELECT t1.123 FROM t1; ERROR: syntax error at or near ".123" LINE 1: SELECT t1.123 FROM t1; ^ m_db=# SELECT t1.1e3 FROM t1; ERROR: syntax error at or near "1e3" LINE 1: SELECT t1.1e3 FROM t1; ^ m_db=# SELECT t1.1e FROM t1; ERROR: syntax error at or near "1" LINE 1: SELECT t1.1e FROM t1; ^ -- 点操作符的场景,正确用法: m_db=# SELECT t1.`123` FROM t1; 123 ----- 7 (1 row) m_db=# SELECT t1.`1e3` FROM t1; 1e3 ----- 8 (1 row) m_db=# SELECT t1.`1e` FROM t1; 1e ---- 9 (1 row) m_db=# DROP TABLE t1; DROP TABLE GaussDB分区名使用双引号(需要设置SQL_MODE为ANSI_QUOTES)或反引号是区分大小写的,MySQL不区分。 MySQL标识符长度限制为64字符,而GaussDB标识符长度限制为63字节。超过标识符的长度限制后,MySql报错,GaussDB会对标识符截断并告警。 父主题: SQL
  • 加密函数 表1 加密函数列表 MySQL数据库 GaussDB数据库 差异 AES_DECRYPT() 支持,存在差异 ecb为不安全加密模式,GaussDB不支持,默认为cbc模式。 GaussDB中,当指定数据库使用的字符编码是SQL_ASCII时,服务器把字节值0~127根据ASCII标准解释,而字节值128~255则当作无法解析的字符;如果该函数的输入输出包含了任何非ASCII数据,数据库将无法帮助用户转换或者校验非ASCII字符。 MySQL的返回值类型为BINARY、VARBINARY、BLOB、MEDIUMBLOB、LONGBLOB,GaussDB返回值类型固定为LONGBLOB。 AES_ENCRYPT() 支持,存在差异 SHA()/SHA1() 支持 - SHA2() 支持 - 父主题: 系统函数
  • 日期和时间函数 以下为GaussDB M-Compatibility兼容性日期时间函数公共说明。 《M-Compatibility开发指南》中“函数和操作符”章节函数入参为时间类型表达式的情况: 时间类型表达式主要包括TEXT、DATETIME、DATE或TIME,但所有可以隐式转换为时间表达式的类型都可以作为入参,比如数字类型可以通过先隐式转化为TEXT,再作为时间类型表达式生效。 生效的情况根据函数有所不同,比如:DATEDIFF函数由于只计算日期的差值,所以时间表达式会当做日期来解析。TIMESTAMPDIFF函数由于计算时间差值时是根据UNIT来决定的,所以会根据UNIT选择将时间表达式当做DATE或者TIME或者DATETIME来解析。 函数入参为无效日期的情况: 一般而言,日期时间函数支持DATE、DATETIME的范围和MySQL保持一致。DATE支持的范围为'0000-01-01'到'9999-12-31',DATETIME支持的范围为'0000-01-01 00:00:00'到'9999-12-31 23:59:59'。虽然GaussDB支持的DATE、DATETIME范围大于MySQL,但是越界仍然算无效日期。 大部分时间函数会告警并返回NULL,只有能通过cast正常转换的日期,才是正常合理的日期。 新框架下GaussDB的大部分日期时间函数与MySQL一致,一些函数的差异如下表所示: 表1 日期与和时间函数列表 MySQL数据库 GaussDB数据库 差异 ADDDATE() 支持 - ADDTIME() 支持 - CONVERT_TZ() 支持 - CURDATE() 支持 - CURRENT_DATE()/CURRENT_DATE 支持 - CURRENT_TIME()/CURRENT_TIME 支持,存在差异 MySQL入参整型值会按照一字节最大值255整数回绕(例:SELECT CURRENT_TIME(257) == SELECT CURRENT_TIME(1))。 GaussDB只支持[0,6]合法值,其他值报错。 CURRENT_TIMESTAMP()/CURRENT_TIMESTAMP 支持,存在差异 MySQL入参整型值会按照一字节最大值255整数回绕(例:SELECT CURRENT_TIMESTAMP(257) == SELECT CURRENT_TIMESTAMP(1))。 GaussDB只支持[0,6]合法值,其他值报错。 CURTIME() 支持,存在差异 MySQL入参整型值会按照一字节最大值255整数回绕(例:SELECT CURTIME(257) == SELECT CURTIME(1))。 GaussDB只支持[0,6]合法值,其他值报错。 DATE() 支持 - DATE_ADD() 支持 - DATE_FORMAT() 支持 - DATE_SUB() 支持 - DATEDIFF() 支持 - DAY() 支持 - DAYNAME() 支持 - DAYOFMONTH() 支持 - DAYOFWEEK() 支持 - DAYOFYEAR() 支持 - EXTRACT() 支持 - FROM_DAYS() 支持 - FROM_UNIXTIME() 支持 - GET_FORMAT() 支持 - HOUR() 支持 - LAST_DAY() 支持 - LOCALTIME()/LOCALTIME 支持,存在差异 MySQL入参整型值会按照一字节最大值255整数回绕(例SELECT LOCALTIME(257) == SELECT LOCALTIME(1))。 GaussDB只支持[0,6]合法值,其他值报错。 LOCALTIMESTAMP/LOCALTIMESTAMP() 支持,存在差异 MySQL入参整型值会按照一字节最大值255整数回绕(例SELECT LOCALTIMESTAMP(257) == SELECT LOCALTIMESTAMP(1))。 GaussDB只支持[0,6]合法值,其他值报错。 MAKEDATE() 支持 - MAKETIME() 支持,存在差异 分布式下推场景下当TIME类型秒位无精度时,MYSQL默认补齐6个0,GaussDB不做补齐。 MICROSECOND() 支持 - MINUTE() 支持 - MONTH() 支持 - MONTHNAME() 支持 - NOW() 支持,存在差异 MySQL入参整型值会按照一字节最大值255整数回绕(例SELECT NOW(257)==SELECT NOW(1))。 GaussDB只支持[0,6]合法值,其他值报错。 PERIOD_ADD() 支持,存在差异 整数溢出处理的行为: MySQL在5.7版本,此函数入参结果最大值为2^32=4294967296,在入参或结果的period对应的月份累加值以及month_number超过uint32范围时存在整数回绕问题;在MySQL 8.0中已修复此问题。GaussDB下此函数的表现与MySQL 8.0版本保持一致。 负数period的表现: MySQL在5.7版本,会将负数年份解析为异常值而不是报错。GaussDB入参或结果(如100年1月减去10000月)出现负数时报错。在MySQL 8.0中已修复此问题。GaussDB下此函数的表现与MySQL 8.0版本保持一致。 period月份越界的表现: MySQL在5.7版本中,若月份大于12或等于0,例如200013、199900,会将其顺延到之后的年份,或者将0月作为上一年12月处理。GaussDB会对越界月份进行报错。在MySQL 8.0中已修复此问题。GaussDB下此函数的表现与MySQL 8.0版本保持一致。 PERIOD_DIFF() 支持,存在差异 整数溢出处理的行为: MySQL在5.7版本,此函数入参结果最大值为2^32=4294967296,在入参或结果的period对应的月份累加值以及month_number超过uint32范围时存在整数回绕问题;在MySQL 8.0中已修复此问题。GaussDB下此函数的表现与MySQL 8.0版本保持一致。 负数period的表现: MySQL在5.7版本,会将负数年份解析为异常值而不是报错。GaussDB入参或结果(如100年1月减去10000月)出现负数时报错。在MySQL 8.0中已修复此问题。GaussDB下此函数的表现与MySQL 8.0版本保持一致。 period月份越界的表现: MySQL在5.7版本中,若月份大于12或等于0,例如200013、199900,会将其顺延到之后的年份,或者将0月作为上一年12月处理。GaussDB会对越界月份进行报错。在MySQL 8.0中已修复此问题。GaussDB下此函数的表现与MySQL 8.0版本保持一致。 QUARTER() 支持 - SEC_TO_TIME() 支持 - SECOND() 支持 - STR_TO_DATE() 支持,存在差异 返回值与MySQL有差异,GaussDB返回的是text,MySQL返回的是datetime、date。 SUBDATE() 支持 - SUBTIME() 支持 - SYSDATE() 支持,存在差异 MySQL入参整型值会按照一字节最大值255整数回绕。 GaussDB不回绕。 TIME() 支持 - TIME_FORMAT() 支持 - TIME_TO_SEC() 支持 - TIMEDIFF() 支持 - TIMESTAMP() 支持 - TIMESTAMPADD() 支持 - TIMESTAMPDIFF() 支持 - TO_DAYS() 支持 - TO_SECONDS() 支持 - UNIX_TIMESTAMP() 支持,存在差异 MySQL会根据入参是否存在小数位,决定返回定点型还是整型。当前GaussDB在内层嵌套操作符或函数时,返回的类型与MySQL可能存在不同。当内层节点返回定点、浮点、字符型、时间类型(不包括DATE类型)时,MySQL可能返回整型,GaussDB会返回定点型。 UTC_DATE() 支持 - UTC_TIME() 支持,存在差异 MySQL入参整型值会按照一字节最大值255整数回绕,GaussDB只支持[0,6]合法值,其他值报错。 UTC_TIMESTAMP() 支持,存在差异 MySQL入参整型值会按照一字节最大值255整数回绕,GaussDB只支持[0,6]合法值,其他值报错。 WEEK() 支持 - WEEKDAY() 支持 - WEEKOFYEAR() 支持 - YEAR() 支持 - YEARWEEK() 支持 - 父主题: 系统函数
  • 窗口函数 表1 窗口函数列表 MySQL数据库 GaussDB数据库 差异 LAG() 支持,存在差异 偏移量N的取值范围不同: MySQL中,N只允许是在范围[0, 263-1]整数值。 GaussDB中,N只允许是在范围[0, 231-1]整数值。 偏移量N的取值形式不同: MySQL中,取值形式如下: 常量字面量的无符号整数。 prepare语句中使用?声明的标记参数。 用户自定义的变量。 存储过程中的局部变量。 GaussDB中,取值形式如下: 常量字面量的无符号整数。 不支持在prepare语句中使用?声明的标记参数(prepare语句当前有差异)。 用户自定义的变量。 不支持使用存储过程中的局部变量(PLSQL当前不支持)。 ORDER BY子句排序时NULL值的排序不同: MySQL中,NULL值默认升序排在前面。 GaussDB中,NULL值默认升序排在后面。 ORDER BY子句排序时NULL值的排序不同: MySQL中,带有精度。 GaussDB中,缺失精度。 二进制字符串显示不同: MySQL中,会显示二进制字符串编码成16进制后的编码值(例如'-4'会显示成编码后的0x2D34)。 GaussDB中,会显示原字符串的值(例如'-4'会保持显示'-4')。 结合CREATE TABLE AS语法创建出的表,使用DESC查看表结构时,存在以下差异: MySQL 8.0中: 对于表中的列类型(Type)为BIGINT类型或INT类型时不显示宽度。 对于表中的列类型(Type)的宽度为0时,显示宽度,如binary(0)。 GaussDB中: 对于表中的列类型(Type)为BIGINT类型或INTEGER类型时会显示宽度。 对于表中的列类型(Type)的宽度为0时,不显示宽度,如binary(0)只显示成binary。 表结构中标识Null和Default值的列,功能暂未实现。 该函数作为子查询结合CREATE TABLE AS使用时,单独执行该函数的子查询语句没有报错或告警时: GaussDB在严格模式和宽松模式下,CREATE TABLE AS语句执行成功,建表成功。 MySQL在严格模式下,CREATE TABLE AS语句执行可能报错,建表失败。 LEAD() 支持,存在差异 与LAG()函数差异点相同。 ROW_NUMBER() 支持,存在差异 ORDER BY子句排序时,NULL值的排序不同: MySQL中,NULL值默认升序排在前面。 GaussDB中,NULL值默认升序排在后面。 窗口函数差异说明:MySQL数据库管理系统在调用窗口函数时,OVER子句中的ORDER BY子句与PARTITION BY子句不支持使用列别名,GaussDB数据库支持使用列别名。 父主题: 系统函数
  • 字符串函数 表1 字符串函数列表 MySQL数据库 GaussDB数据库 差异 ASCII() 支持 - BIT_LENGTH() 支持 - CHAR_LENGTH() 支持,存在差异 GaussDB此函数如果数据库字符集是SQL_ASCII,CHAR_LENGTH()会返回字节数而非字符数。 CHARACTER_LENGTH() 支持,存在差异 GaussDB此函数如果数据库字符集是SQL_ASCII,CHARACTER_LENGTH()会返回字节数而非字符数。 CONCAT() 支持,存在差异 当MySQL返回值类型为二进制字符串类型(BINARY、VARBINARY、BLOB等)时,GaussDB对应的返回值类型为LONGBLOB;当MySQL返回值类型为非二进制字符串类型(CHAR、VARCHAR、TEXT等)时,GaussDB对应的返回值类型为TEXT。 CONCAT_WS() 支持,存在差异 当MySQL返回值类型为二进制字符串类型(BINARY、VARBINARY、BLOB等)时,GaussDB对应的返回值类型为LONGBLOB;当MySQL返回值类型为非二进制字符串类型(CHAR、VARCHAR、TEXT等)时,GaussDB对应的返回值类型为TEXT。 HEX() 支持 - LENGTH() 支持 - LPAD() 支持,存在差异 MySQL默认最大填充长度为1398101,GaussDB默认最大长度为1048576。在不同字符集下,最大填充长度会有差异,例如字符集为'GBK'时,GaussDB默认最大长度为2097152。 如果数据库字符集是SQL_ASCII,可能产生未预期的结果。 当MySQL返回值类型为二进制字符串类型(BINARY、VARBINARY、BLOB等)时,GaussDB对应的返回值类型为LONGBLOB;当MySQL返回值类型为非二进制字符串类型(CHAR、VARCHAR、TEXT等)时,GaussDB对应的返回值类型为TEXT。 REPEAT() 支持,存在差异 当MySQL返回值类型为二进制字符串类型(BINARY、VARBINARY、BLOB等)时,GaussDB对应的返回值类型为LONGBLOB;当MySQL返回值类型为非二进制字符串类型(CHAR、VARCHAR、TEXT等)时,GaussDB对应的返回值类型为TEXT。 REPLACE() 支持,存在差异 当MySQL返回值类型为二进制字符串类型(BINARY、VARBINARY、BLOB等)时,GaussDB对应的返回值类型为LONGBLOB;当MySQL返回值类型为非二进制字符串类型(CHAR、VARCHAR、TEXT等)时,GaussDB对应的返回值类型为TEXT。 RPAD() 支持,存在差异 MySQL默认最大填充长度为1398101,GaussDB默认最大长度为1048576。在不同字符集下,最大填充长度会有差异,例如字符集为'GBK'时,GaussDB默认最大长度为2097152。 如果数据库字符集是SQL_ASCII,可能产生未预期的结果。 当MySQL返回值类型为二进制字符串类型(BINARY、VARBINARY、BLOB等)时,GaussDB对应的返回值类型为LONGBLOB;当MySQL返回值类型为非二进制字符串类型(CHAR、VARCHAR、TEXT等)时,GaussDB对应的返回值类型为TEXT。 SPACE() 支持 - STRCMP() 支持,存在差异 如果数据库字符集是SQL_ASCII,可能产生未预期的结果。 FIND_IN_SET() 支持,存在差异 当指定数据库使用的字符编码是SQL_ASCII时,服务器把字节值0~127根据ASCII标准解释,而字节值128~255则当作无法解析的字符;如果该函数的输入输出包含了任何非ASCII数据,数据库将无法帮助用户转换或者校验非ASCII字符。 当MySQL返回值类型为二进制字符串类型(BINARY、VARBINARY、BLOB等)时,GaussDB对应的返回值类型为LONGBLOB;当MySQL返回值类型为非二进制字符串类型(CHAR、VARCHAR、TEXT等)时,GaussDB对应的返回值类型为TEXT。 LCASE() LEFT() LOWER() LTRIM() REVERSE() RIGHT() RTRIM() SUBSTR() SUBSTRING() SUBSTRING_INDEX() TRIM() UCASE() UPPER() UNHEX() 支持,存在差异 MySQL的返回值类型为BINARY、VARBINARY、BLOB、MEDIUMBLOB或LONGBLOB;GaussDB返回值类型固定为LONGBLOB。 FIELD() 支持 - FORMAT() 支持 - 父主题: 系统函数
  • 字符集 GaussDB数据库支持指定数据库、模式、表或列的字符集,支持的范围如下。 表1 字符集列表 MySQL数据库 GaussDB数据库 utf8mb4 支持 utf8 支持 gbk 支持 gb18030 支持 binary 支持 utf8和utf8mb4在GaussDB中为同一个字符集,编码最大长度为4字节。当前字符串字符集为utf8,指定其字符序为utf8mb4_bin/utf8mb4_general_ci/utf8mb4_unicode_ci/utf8mb4_0900_ai_ci时(例如SELECT _utf8'a' collate utf8mb4_bin),MySQL中会发生报错,GaussDB不报错。当字符串字符集为utf8mb4,指定其字符序为utf8_bin/utf8_general_ci/utf8_unicode_ci时,存在同样差异。 词法语法解析按照字节流解析,当多字节字符中包含与'\', '\'', '\\'等符号一致的编码时,会导致与mysql行为不一致,建议暂时关闭转义符开关进行规避。 目前GaussDB对不属于当前字符集的非法字符未执行严格的编码逻辑校验,可能导致此类非法字符成功输入。而MySQL会校验报错。 父主题: MySQL兼容性M-Compatibility模式
  • 其他语句 表1 其他语法兼容介绍 概述 详细语法说明 差异 事务相关语法 数据库默认隔离级别 M-Compatibility默认隔离级别为READ COMMITTED,MySQL默认隔离级别为REPEATABLE READ。 M-Compatibility隔离级别只有READ COMMITTED、REPEATABLE READ生效。 事务相关语法 事务嵌套 M-Compatibility中嵌套事务不会自动提交,MySQL会自动提交。 事务相关语法 自动提交 M-Compatibility使用GaussDB存储,继承GaussDB事务机制,事务中执行DDL,DCL不会自动提交。MySQL在DDL、DCL、管理类语句,锁相关语句会自动提交。 事务相关语法 报错后需rollback M-Compatibility事务中报错,需要执行rollback,MySQL无限制。 事务相关语法 锁机制 M-Compatibility锁机制只能在事务块中使用,MySQL无限制。 锁机制 锁机制 MySQL获取read锁后,当前会话无法进行写操作,M-Compatibility获取read锁后,当前会话可以进行写操作。 MySQL给表上锁后,读取其他表报错,M-Compatibility无限制。 MySQL同一会话中获取同一个表的锁,会自动释放上一个锁,并提交事务,M-Compatibility无该机制。 M-Compatibility中LOCK TABLE只能在一个事务块的内部有用,且无UNLOCK TABLE命令,锁总是在事务结束时释放。 PBE PBE 重复创建同名的PREPARE语句,M-Compatibility会报已经存在的错误,需要先删除已有statement,MySQL会覆盖旧的statement。 M-Compatibility和MySQL在SQL语句执行过程中对异常场景的报错阶段不同,例如解析层、执行层等;而PREPARE语句对预备语句只处理到解析层。因此PBE下对于异常场景,报错位置在PREPARE阶段还是EXECUTE阶段,M-Compatibility和MySQL存在可能差异。 父主题: SQL
  • 字符串数据类型 表1 字符串数据类型 MySQL数据库 GaussDB数据库 差异 CHAR[(M)] 支持 输入格式 GaussDB自定义函数参数和返回值不支持长度校验,存储过程参数不支持长度校验,同时也不支持在PAD_CHAR_TO_FULL_LENGTH打开时补齐正确的空格,MySQL支持。 GaussDB不支持转义字符输入,不支持""双引号输入,MySQL支持。 语法 GaussDB的 Cast(expr as char)语法无法根据输入的字符串长度转成对应的类型,只支持转成varchar类型。不支持cast( '' as char) 和cast( '' as char(0))将空串转成char(0)类型。MySQL支持按长度转成对应的类型。 操作符 GaussDB能正常转成浮点型的字符串与整型值进行加、减、乘、除、求余计算,返回值是整型值,MySQL是返回浮点型。 GaussDB除以0会报错,MySQL返回null。 “~”:GaussDB返回负数,MySQL返回8字节无符号整数。 “^”:GaussDB表示次方幂,MySQL表示按位异或。 VARCHAR(M) 支持 输入格式: GaussDB的自定义函数参数和返回值不支持长度校验,存储过程参数不支持长度校验,MySQL支持。 GaussDB的自定义函数和存储过程中的临时变量支持长度校验以及严格宽松模式下的报错和截断告警,MySQL不支持。 GaussDB不支持转义字符输入,不支持""双引号输入,MySQL支持。 操作符 GaussDB能正常转成浮点型的字符串与整型值进行加、减、乘、除、求余计算,返回值是整型值,MySQL是返回浮点型。 GaussDB除以0会报错,MySQL返回null。 “~”:GaussDB返回负数,MySQL返回8字节无符号整数。 “^”:GaussDB表示次方幂,MySQL表示按位异或。 TINYTEXT 支持 输入格式 GaussDB中该类型的长度不能超过1GB,超过长度限制后会报错。MySQL中该类型不能超过255字节,超过长度限制后,在严格模式下会报错,在宽松模式下会对数据进行截断并告警。 GaussDB不支持转义字符输入,不支持""双引号输入,MySQL支持。 操作符 GaussDB能正常转成浮点型的字符串与整型值进行加、减、乘、除、求余计算,返回值是整型值,MySQL是返回浮点型。 GaussDB除以0会报错,MySQL返回null。 “~”:GaussDB返回负数,MySQL返回8字节无符号整数。 “^”:GaussDB表示次方幂,MySQL表示按位异或。 TEXT 支持 输入格式 GaussDB中该类型的长度不能超过1GB,超过长度限制后会报错。MySQL中该类型不能超过65535字节,超过长度限制后,在严格模式下会报错,在宽松模式下会对数据进行截断并告警。 GaussDB不支持转义字符输入,不支持""双引号输入,MySQL支持。 操作符 GaussDB能正常转成浮点型的字符串与整型值进行加、减、乘、除、求余计算,返回值是整型值,MySQL是返回浮点型。 GaussDB除以0会报错,MySQL返回null。 “~”:GaussDB返回负数,MySQL返回8字节无符号整数。 “^”:GaussDB表示次方幂,MySQL表示按位异或。 MEDIUMTEXT 支持 输入格式 GaussDB中该类型的长度不能超过1GB,超过长度限制后会报错。MySQL中该类型不能超过16777215字节,超过长度限制后,在严格模式下会报错,在宽松模式下会对数据进行截断并告警。 GaussDB不支持转义字符输入,不支持""双引号输入,MySQL支持。 操作符 GaussDB能正常转成浮点型的字符串与整型值进行加、减、乘、除、求余计算,返回值是整型值,MySQL是返回浮点型。 GaussDB除以0会报错,MySQL返回null。 “~”:GaussDB返回负数,MySQL返回8字节无符号整数。 “^”:GaussDB表示次方幂,MySQL表示按位异或。 LONGTEXT 支持 输入格式 GaussDB只支持不超过1GB的长度,MySQL支持4GB-1字节的长度。 GaussDB不支持转义字符输入,不支持""双引号输入,MySQL支持。 操作符 GaussDB能正常转成浮点型的字符串与整型值进行加、减、乘、除、求余计算,返回值是整型值,MySQL是返回浮点型。 GaussDB除以0会报错,MySQL返回null。 “~”:GaussDB返回负数,MySQL返回8字节无符号整数。 “^”:GaussDB表示次方幂,MySQL表示按位异或。 ENUM('value1','value2',...) 不支持 - SET('value1','value2',...) 支持 - 父主题: 数据类型
  • 区域和可用区 区域和可用区用来描述数据中心的位置,您可以在特定的区域、可用区创建资源。 区域(Region):从地理位置和网络时延维度划分,同一个Region内共享弹性计算、块存储、对象存储、VPC网络、弹性公网IP、镜像等公共服务。Region分为通用Region和专属Region,通用Region指面向公共租户提供通用云服务的Region;专属Region指只承载同一类业务或只面向特定租户提供业务服务的专用Region。 可用区(AZ,Availability Zone):一个AZ是一个或多个物理数据中心的集合,有独立的风火水电,AZ内逻辑上再将计算、网络、存储等资源划分成多个实例。一个Region中的多个AZ间通过高速光纤相连,以满足用户跨AZ构建高可用性系统的需求。 图1阐明了区域和可用区之间的关系。 图1 区域和可用区 目前,华为云已在全球多个地域开放云服务,您可以根据需求选择适合自己的区域和可用区。更多信息请参见华为云全球站点。
  • 实例操作限制 表5 实例操作限制 功能 使用限制 数据库访问 如果GaussDB实例未开通公网访问,则该实例必须与云主机弹性云服务器处在同一个虚拟私有云子网内才能相互访问。 弹性云服务器必须处于目标GaussDB实例所属安全组允许访问的范围内。 如果GaussDB实例与弹性云服务器处于不同的安全组,系统默认不能访问。需要在GaussDB的安全组添加一条“入”的访问规则。 GaussDB实例的默认端口为8000。 数据库端口支持创建时设置,后期可修改。 部署 实例所部署的服务器,对用户都不可见,即只允许应用程序通过IP地址和端口访问数据库。 重启GaussDB实例 无法通过命令行重启,必须通过GaussDB的管理控制台操作重启实例。 GaussDB备份查看 GaussDB实例在 对象存储服务 上的备份文件,对用户不可见。 变更配置 默认不支持将规格参数变小,如需要将规格参数变小,您可以联系华为云技术支持,由华为云工程师给出分析评估后进行处理。 规格变更前,须确保实例状态正常。在实例异常、节点异常、磁盘满的情况下不允许进行规格变更。 高可用(1主2备)部署形态下,规格变更过程中会进行主备倒换,主备倒换过程中会有1min左右的业务中断。 单副本的部署形态下,规格变更过程中会进行中断重启,中断重启过程中会有5~10min的业务中断。 修改CPU/内存后,将会重启数据库实例,重启数据库实例将导致数据库业务短暂中断。 故障切换 对于集中式版,主节点切换备节点,大概有10s左右服务不可用。 数据恢复 为避免数据丢失,建议数据恢复前备份重要数据。 存储空间 若实例的磁盘空间已满,此时不可进行数据库写入操作,您需要扩容磁盘使实例恢复到正常状态。建议定期检查存储空间。 性能优化 性能调优过程有时候需要重启集群,可能会中断当前业务。 回收站管理 支持将退订后的包年/包月实例和删除的按需实例,加入回收站管理。通过数据库回收站中重建实例功能,可以恢复1~7天内删除的实例。 回收站策略机制默认开启,默认保留时间为7天,且不可关闭。
  • 安全限制 表4 安全限制 限制项 说明 管理员账户root权限 创建实例页面只提供管理员root用户权限。 说明: 在2022.08.30后,GaussDB为root用户开放了sysadmin权限。新创建实例的root用户都将拥有sysadmin权限,而存量实例执行版本升级后,root用户也将拥有sysadmin权限,如果需要进行版本升级,请联系技术支持处理。 如果存量实例未进行版本升级,则管理员root用户权限为:createrole,createdb和monadmin。由于旧版本root权限低于完整的管理员用户权限, 部分SQL语法/函数执行时会报权限不足,例如:create tablespace 等 管理员账户root的密码 长度为8~32个字符。 至少包含大写字母(A-Z),小写字母(a-z),数字(0-9),非字母数字字符(限定为~!@#%^*-_=+?,)四类字符中的三类字符。 更多信息,请参见重置管理员密码。 数据库端口 设置范围为1024~39989(其中2378~2380、2400、4999~5001、5100、5500、5999~6001、6009~6010、6500、8015、8097、8098、8181、9090、9100、9180、9187、9200、12016、12017、20049、20050、21731、21732、32122~32126、39001被系统占用不可设置)。 更多信息,请参见修改数据库端口。 磁盘加密 购买磁盘加密后,在实例创建成功后不可修改磁盘加密状态,且无法更改密钥。 虚拟私有云 目前GaussDB实例创建完成后不支持切换虚拟私有云。 安全组 默认情况下,一个租户可以创建500条安全组规则。 建议一个安全组内的安全组规则不超过50条。更多信息,请参见设置安全组规则。 系统账户 创建GaussDB数据库实例时,系统会自动为实例创建如下系统账户(用户不可使用),用于给数据库实例提供完善的后台运维管理服务。 rdsAdmin:管理账户,拥有最高权限。 rdsBackup:备份账户,用于后台的备份。 rdsRepl:主备同步账户,用于备实例在主实例上同步数据。 root:系统管理员账户。 rdsMetric:指标监控账户,获取GaussDB的性能指标,用于上报到Cloud Eye供租户查看GaussDB运行情况。
  • 命名限制 表3 命名限制 限制项 说明 实例名称 长度在4个到64个字符之间。 必须以字母开头(区分大小写),可以包含字母、数字、中划线或下划线,不能包含其他特殊字符。 备份名称 长度在4~64个字符之间。 必须以字母开头,区分大小写,可以包含字母、数字、中划线或者下划线,不能包含其他特殊字符。 参数模板名称 长度在1~64个字符之间。 区分大小写,可包含字母、数字、中划线、下划线或句点,不能包含其他特殊字符。
  • 配额限制 表2 配额限制 资源类型 限制 说明 标签 1个实例最多支持20个标签配额。 更多信息,请参见标签。 免费备份空间 GaussDB提供了和实例磁盘大小相同的部分免费存储空间,用于存放您的备份数据。 免费的存储空间是在收取了数据盘的存储空间费用后赠送的,更多信息,请参见GaussDB的备份是如何收费的。 自动备份保留天数 默认为7天,可设置范围为1~732天。 更多信息,请参见设置实例级自动备份策略。
  • 规格与限制 表1 规格说明 资源类型 规格 说明 存储空间 集中式版:40GB~24000GB 分布式版:120GB~72000GB 对于SSD云盘和极速型SSD,如果您想提高存储空间扩容上限到10TB,请联系客服申请。 连接数 最小值为10,理论最大值为262143,实际最大值为动态值。 不同内存规格下的最大连接数不同,请参见最大连接数配置。 IOPS 超高IO:最大50000 极速型SSD:最大128000 SSD云盘和极速型SSD支持的IOPS取决于云硬盘(Elastic Volume Service,简称EVS)的IO性能,具体请参见《云硬盘产品介绍》中“磁盘类型及性能介绍”中“超高IO”和“极速型SSD”的内容。
  • 兼容PostgreSQL的函数和操作符 下述列表为GaussDB的内建函数和操作符兼容PostgreSQL。 _pg_char_max_length _pg_char_octet_length _pg_datetime_precision _pg_expandarray _pg_index_position _pg_interval_type _pg_numeric_precision _pg_numeric_precision_radix _pg_numeric_scale _pg_truetypid _pg_truetypmod abbrev abs abstime abstimeeq abstimege abstimegt abstimein abstimele abstimelt abstimene abstimeout abstimerecv abstimesend aclcontains acldefault aclexplode aclinsert aclitemeq aclitemin aclitemout aclremove acos age akeys any_in any_out anyarray_in anyarray_out anyarray_recv anyarray_send anyelement_in anyelement_out anyenum_in anyenum_out anynonarray_in anynonarray_out anyrange_in anyrange_out anytextcat area areajoinsel areasel array_agg array_agg_finalfn array_agg_transfn array_append array_cat array_dims array_eq array_fill array_ge array_gt array_in array_larger array_le array_length array_lower array_lt array_ndims array_ne array_out array_prepend array_recv array_send array_smaller array_to_json array_to_string array_typanalyze array_upper arraycontained arraycontains arraycontjoinsel arraycontsel arrayoverlap ascii asin atan atan2 avals avg big5_to_euc_tw big5_to_mic big5_to_utf8 bit bit_and bit_in bit_length bit_or bit_out bit_recv bit_send bitand bitcat bitcmp biteq bitge bitgt bitle bitlt bitne bitnot bitor bitshiftleft bitshiftright bittypmodin bittypmodout bitxor bool bool_and bool_or booland_statefunc booleq boolge boolgt boolin boolle boollt boolne boolor_statefunc boolout boolrecv boolsend box box_above box_above_eq box_add box_below box_below_eq box_center box_contain box_contain_pt box_contained box_distance box_div box_eq box_ge box_gt box_in box_intersect box_le box_left box_lt box_mul box_out box_overabove box_overbelow box_overlap box_overleft box_overright box_recv box_right box_same box_send box_sub bpchar bpchar_larger bpchar_pattern_ge bpchar_pattern_gt bpchar_pattern_le bpchar_pattern_lt bpchar_smaller bpchar_sortsupport bpcharcmp bpchareq bpcharge bpchargt bpchariclike bpcharicnlike bpcharicregexeq bpcharicregexne bpcharin bpcharle bpcharlike bpcharlt bpcharne bpcharnlike bpcharout bpcharrecv bpcharregexeq bpcharregexne bpcharsend bpchartypmodin bpchartypmodout broadcast btabstimecmp btarraycmp btbeginscan btboolcmp btbpchar_pattern_cmp btbuild btbuildempty btbulkdelete btcanreturn btcharcmp btcostestimate btendscan btfloat48cmp btfloat4cmp btfloat4sortsupport btfloat84cmp btfloat8cmp btfloat8sortsupport btgetbitmap btgettuple btinsert btint24cmp btint28cmp btint2cmp btint2sortsupport btint42cmp btint48cmp btint4cmp btint4sortsupport btint82cmp btint84cmp btint8cmp btint8sortsupport btmarkpos btnamecmp btnamesortsupport btoidcmp btoidsortsupport btoidvectorcmp btoptions btrecordcmp btreltimecmp btrescan btrestrpos btrim bttext_pattern_cmp bttextcmp bttextsortsupport bttidcmp bttintervalcmp btvacuumcleanup bytea_sortsupport bytea_string_agg_finalfn bytea_string_agg_transfn byteacat byteacmp byteaeq byteage byteagt byteain byteale bytealike bytealt byteane byteanlike byteaout bytearecv byteasend cash_cmp cash_div_cash cash_div_flt4 cash_div_flt8 cash_div_int2 cash_div_int4 cash_div_int8 cash_eq cash_ge cash_gt cash_in cash_le cash_lt cash_mi cash_mul_flt4 cash_mul_flt8 cash_mul_int2 cash_mul_int4 cash_mul_int8 cash_ne cash_out cash_pl cash_recv cash_send cashlarger cashsmaller cbrt ceil ceiling center char char_length character_length chareq charge chargt charin charle charlt charne charout charrecv charsend chr cideq cidin cidout cidr cidr_in cidr_out cidr_recv cidr_send cidrecv cidsend circle circle_above circle_add_pt circle_below circle_center circle_contain circle_contain_pt circle_contained circle_distance circle_div_pt circle_eq circle_ge circle_gt circle_in circle_le circle_left circle_lt circle_mul_pt circle_ne circle_out circle_overabove circle_overbelow circle_overlap circle_overleft circle_overright circle_recv circle_right circle_same circle_send circle_sub_pt clock_timestamp close_lb close_ls close_lseg close_pb close_pl close_ps close_sb close_sl col_description concat concat_ws contjoinsel contsel convert convert_from convert_to corr cos cot count covar_pop covar_samp cstring_in cstring_out cstring_recv cstring_send cume_dist current_database current_query current_schema - current_setting current_user currtid currtid2 currval - - - - - date date_cmp date_cmp_timestamp date_cmp_timestamptz date_eq date_eq_timestamp date_eq_timestamptz date_ge date_ge_timestamp date_ge_timestamptz date_gt date_gt_timestamp date_gt_timestamptz date_in date_larger date_le date_le_timestamp date_le_timestamptz date_lt date_lt_timestamp date_lt_timestamptz date_mi date_mi_interval date_mii date_ne date_ne_timestamp date_ne_timestamptz date_out date_pl_interval date_pli date_recv date_send date_smaller date_sortsupport daterange_canonical daterange_subdiff datetime_pl datetimetz_pl dcbrt decode defined degrees delete dense_rank dexp diagonal diameter dispell_init dispell_lexize dist_cpoly dist_lb dist_pb dist_pc dist_pl dist_ppath dist_ps dist_sb dist_sl div dlog1 dlog10 domain_in domain_recv dpow dround dsimple_init dsimple_lexize dsnowball_init dsnowball_lexize dsqrt dsynonym_init dsynonym_lexize dtrunc each enum_ne enum_out enum_range enum_recv enum_send enum_smaller eqjoinsel eqsel euc_cn_to_mic euc_cn_to_utf8 euc_jis_2004_to_shift_jis_2004 euc_jis_2004_to_utf8 euc_jp_to_mic euc_jp_to_sjis euc_jp_to_utf8 euc_kr_to_mic euc_kr_to_utf8 euc_tw_to_big5 euc_tw_to_mic euc_tw_to_utf8 every exist exists_all exists_any exp factorial family fdw_handler_in fdw_handler_out fetchval first_value float4 float4_accum float48div float48eq float48ge float48gt float48le float48lt float48mi float48mul float48ne float48pl float4abs float4div float4eq float4ge float4gt float4in float4larger float4le float4lt float4mi float4mul float4ne float4out float4pl float4recv float4send float4smaller float4um float4up float8 float8_accum float8_avg float8_collect float8_corr float8_covar_pop float8_covar_samp float8_regr_accum float8_regr_avgx float8_regr_avgy float8_regr_collect float8_regr_intercept float8_regr_r2 float8_regr_slope float8_regr_sxx float8_regr_sxy float8_regr_syy float8_stddev_pop float8_stddev_samp float8_var_pop float8_var_samp float84div float84eq float84ge float84gt float84le float84lt float84mi float84mul float84ne float84pl float8abs float8div float8eq float8ge float8gt float8in float8larger float8le float8lt float8mi float8mul float8ne float8out float8pl float8recv float8send float8smaller float8um float8up floor flt4_mul_cash flt8_mul_cash fmgr_c_validator fmgr_internal_validator fmgr_sql_validator format format_type gb18030_to_utf8 gbk_to_utf8 generate_series generate_subscripts get_bit get_byte get_current_ts_config - - - - - gtsquery_compress gtsquery_consistent gtsquery_decompress gtsquery_penalty gtsquery_picksplit gtsquery_same gtsquery_union gtsvector_compress gtsvector_consistent gtsvector_decompress gtsvector_penalty gtsvector_picksplit gtsvector_same gtsvector_union gtsvectorin gtsvectorout has_tablespace_privilege has_type_privilege hash_aclitem hashbeginscan hashbuild hashbuildempty hashbulkdelete hashcostestimate hashendscan hashgetbitmap hashgettuple hashinsert hashint2vector hashint4 hashint8 hashmacaddr hashmarkpos hashname hashoid hashoidvector hashoptions hashrescan hashrestrpos hashtext hashvacuumcleanup hashvarlena host hostmask iclikejoinsel iclikesel icnlikejoinsel icnlikesel icregexeqjoinsel icregexeqsel icregexnejoinsel icregexnesel inet_client_addr inet_client_port inet_in inet_out inet_recv inet_send inet_server_addr inet_server_port inetand inetmi inetmi_int8 inetnot inetor inetpl initcap int2_accum int2_avg_accum int2_mul_cash int2_sum int24div int24eq int24ge int24gt int24le int24lt int24mi int24mul int24ne int24pl int28div int28eq int28ge int28gt int28le int28lt int28mi int28mul int28ne int28pl int2abs int2and int2div int2eq int2ge int2gt int2in int2larger int2le int2lt int2mi int2mod int2mul int2ne int2not int2or int2out int2pl int2recv int2send int2shl int2shr int2smaller int2um int2up int2vectoreq int2vectorin int2vectorout int2vectorrecv int2vectorsend int2xor int4_accum int4_avg_accum int4_mul_cash int4_sum int42div int42eq int42ge int42gt int42le int42lt int42mi int42mul int42ne int42pl int48div int48eq int48ge int48gt int48le int48lt int48mi int48mul int48ne int48pl int4abs int4and int4div int4eq int4ge int4gt int4in int4inc int4larger int4le int4lt int4mi int4mod int4mul int4ne int4not int4or int4out int4pl int4range int4range_canonical int4range_subdiff int4recv int4send int4shl int4shr int4smaller int4um int4up int4xor int8 int8_avg int8_avg_accum int8_avg_collect int8_mul_cash int8_sum int8_sum_to_int8 int8_accum int82div int82eq int82ge int82gt int82le int82lt int82mi int82mul int82ne int82pl int84div int84eq int84ge int84gt int84le int84lt int84mi int84mul int84ne int84pl int8abs int8and int8div int8eq int8ge int8gt int8in int8inc int8inc_any int8inc_float8_float8 int8larger int8le int8lt int8mi int8mod int8mul int8ne int8not int8or int8out int8pl int8pl_inet int8range int8range_canonical int8range_subdiff int8recv int8send int8shl int8shr int8smaller int8um int8up int8xor integer_pl_date inter_lb inter_sb inter_sl internal_in internal_out interval interval_accum interval_avg interval_cmp interval_collect interval_div interval_eq interval_ge interval_gt interval_hash interval_in interval_larger interval_le interval_lt interval_mi interval_mul interval_ne interval_out interval_pl interval_pl_date interval_pl_time interval_pl_timestamp interval_pl_timestamptz interval_pl_timetz interval_recv interval_send interval_smaller interval_transform interval_um intervaltypmodin intervaltypmodout intinterval isexists ishorizontal iso_to_koi8r iso_to_mic iso_to_win1251 iso_to_win866 iso8859_1_to_utf8 iso8859_to_utf8 isparallel isperp isvertical johab_to_utf8 jsonb_in jsonb_out jsonb_recv jsonb_send - - - json_in json_out json_recv json_send justify_days justify_hours justify_interval koi8r_to_iso koi8r_to_mic koi8r_to_utf8 koi8r_to_win1251 koi8r_to_win866 koi8u_to_utf8 language_handler_in language_handler_out latin1_to_mic latin2_to_mic latin2_to_win1250 latin3_to_mic latin4_to_mic like_escape likejoinsel likesel line line_distance line_eq line_horizontal line_in line_interpt line_intersect line_out line_parallel line_perp line_recv line_send line_vertical ln lo_close lo_creat lo_create lo_export lo_import lo_lseek lo_open lo_tell lo_truncate lo_unlink log loread lower lower_inc lower_inf lowrite lpad lseg lseg_center lseg_distance lseg_eq lseg_ge lseg_gt lseg_horizontal lseg_in lseg_interpt lseg_intersect lseg_le lseg_length lseg_lt lseg_ne lseg_out lseg_parallel lseg_perp lseg_recv lseg_send lseg_vertical ltrim macaddr_and macaddr_cmp macaddr_eq macaddr_ge macaddr_gt macaddr_in macaddr_le macaddr_lt macaddr_ne macaddr_not macaddr_or macaddr_out macaddr_recv macaddr_send makeaclitem masklen max md5(MD5加密算法安全性低,存在安全风险,建议使用更安全的加密算法) mic_to_big5 mic_to_euc_cn mic_to_euc_jp mic_to_euc_kr mic_to_euc_tw mic_to_iso mic_to_koi8r mic_to_latin1 mic_to_latin2 mic_to_latin3 mic_to_latin4 mic_to_sjis mic_to_win1250 mic_to_win1251 mic_to_win866 min mktinterval money mul_d_interval name nameeq namege namegt nameiclike nameicnlike nameicregexeq nameicregexne namein namele namelike namelt namene namenlike nameout namerecv nameregexeq nameregexne namesend neqjoinsel neqsel network_cmp network_eq network_ge network_gt network_le network_lt network_ne network_sub network_subeq network_sup network_supeq nlikejoinsel nlikesel numeric numeric_abs numeric_accum numeric_add numeric_avg numeric_avg_accum numeric_avg_collect numeric_cmp numeric_collect numeric_div numeric_div_trunc numeric_eq numeric_exp numeric_fac numeric_ge numeric_gt numeric_in numeric_inc numeric_larger numeric_le numeric_ln numeric_log numeric_lt numeric_mod numeric_mul numeric_ne numeric_out numeric_power numeric_recv numeric_send numeric_smaller numeric_sortsupport numeric_sqrt numeric_stddev_pop numeric_stddev_samp numeric_sub numeric_transform numeric_uminus numeric_uplus numeric_var_pop numeric_var_samp numerictypmodin numerictypmodout numrange_subdiff oid oideq oidge oidgt oidin oidlarger oidle oidlt oidne oidout oidrecv oidsend oidsmaller oidvectoreq oidvectorge oidvectorgt oidvectorin oidvectorle oidvectorlt oidvectorne oidvectorout oidvectorrecv oidvectorsend oidvectortypes on_pb on_pl on_ppath on_ps on_sb on_sl opaque_in opaque_out ordered_set_transition overlaps overlay path path_add path_add_pt path_center path_contain_pt path_distance path_div_pt path_in path_inter path_length path_mul_pt path_n_eq path_n_ge path_n_gt path_n_le path_n_lt path_npoints path_out path_recv path_send path_sub_pt percentile_cont percentile_cont_float8_final percentile_cont_interval_final pg_char_to_encoding pg_cursor pg_encoding_max_length pg_encoding_to_char pg_extension_config_dump - - pg_node_tree_in pg_node_tree_out pg_node_tree_recv pg_node_tree_send pg_prepared_statement pg_prepared_xact - - pg_show_all_settings pg_stat_get_bgwriter_stat_reset_time pg_stat_get_buf_fsync_backend pg_stat_get_checkpoint_sync_time pg_stat_get_checkpoint_write_time pg_stat_get_db_blk_read_time pg_stat_get_db_blk_write_time pg_stat_get_db_conflict_all pg_stat_get_db_conflict_bufferpin pg_stat_get_db_conflict_snapshot pg_stat_get_db_conflict_startup_deadlock pg_switch_xlog - pg_timezone_abbrevs pg_timezone_names pg_stat_get_wal_receiver plpgsql_call_handler plpgsql_inline_handler plpgsql_validator point_above point_add point_below point_distance point_div point_eq point_horiz point_in point_left point_mul point_ne point_out point_recv point_right point_send point_sub point_vert poly_above poly_below poly_center poly_contain poly_contain_pt poly_contained poly_distance poly_in poly_left poly_npoints poly_out poly_overabove poly_overbelow poly_overlap poly_overleft poly_overright poly_recv poly_right poly_same poly_send polygon position positionjoinsel positionsel postgresql_fdw_validator pow power prsd_end prsd_headline prsd_lextype prsd_nexttoken prsd_start pt_contained_circle pt_contained_poly - - - quote_ident quote_literal quote_nullable radians radius random range_adjacent range_after range_before range_cmp range_contained_by range_contains range_contains_elem range_ge range_eq range_gt range_in range_intersect range_le range_lt range_minus range_ne range_out range_overlaps range_overleft range_overright range_recv range_send range_typanalyze range_union rank record_eq record_ge record_gt record_in record_le record_lt record_ne record_out record_recv record_send regclass regclassin regclassout regclassrecv regclasssend regconfigin regconfigout regconfigrecv regconfigsend regdictionaryin regdictionaryout regdictionaryrecv regdictionarysend regexeqjoinsel regexeqsel regexnejoinsel regexnesel regexp_matches regexp_replace regexp_split_to_array regexp_split_to_table regoperatorin regoperatorout regoperatorrecv regoperatorsend regoperin regoperout regoperrecv regopersend regprocedurein regprocedureout regprocedurerecv regproceduresend regprocin regprocout regprocrecv regprocsend regr_avgx regr_avgy regr_count regr_intercept regr_r2 regr_slope regr_sxx regr_sxy regr_syy regtypein regtypeout regtyperecv regtypesend reltime reltimeeq reltimege reltimegt reltimein reltimele reltimelt reltimene reltimeout reltimerecv reltimesend repeat replace reverse RI_FKey_cascade_del RI_FKey_cascade_upd RI_FKey_check_ins RI_FKey_check_upd RI_FKey_noaction_del RI_FKey_noaction_upd RI_FKey_restrict_del RI_FKey_restrict_upd RI_FKey_setdefault_del RI_FKey_setdefault_upd RI_FKey_setnull_del RI_FKey_setnull_upd right round row_number row_to_json rpad rtrim scalargtjoinsel scalargtsel scalarltjoinsel scalarltsel - schema_to_xml_and_xmlschema - session_user set_bit set_byte set_config set_masklen shift_jis_2004_to_euc_jis_2004 shift_jis_2004_to_utf8 sjis_to_euc_jp sjis_to_mic sjis_to_utf8 smgrin smgrout spg_kd_choose spg_kd_config spg_kd_inner_consistent spg_kd_picksplit spg_quad_choose spg_quad_config spg_quad_inner_consistent spg_quad_leaf_consistent spg_quad_picksplit spg_text_choose spg_text_config spg_text_inner_consistent spg_text_leaf_consistent spg_text_picksplit spgbeginscan spgbuild spgbuildempty spgbulkdelete spgcanreturn spgcostestimate spgendscan spggetbitmap spggettuple spginsert spgmarkpos spgoptions spgrescan spgrestrpos spgvacuumcleanup stddev stddev_pop stddev_samp string_agg string_agg_finalfn string_agg_transfn strip sum suppress_redundant_updates_trigger - - - tan text text_ge text_gt text_larger text_le text_lt text_pattern_ge text_pattern_gt text_pattern_le text_pattern_lt text_smaller textanycat textcat texteq texticlike texticnlike texticregexeq texticregexne textin textlike textne textnlike textout textrecv textregexeq textregexne textsend thesaurus_init thesaurus_lexize tideq tidge tidgt tidin tidlarger tidle tidlt tidne tidout tidrecv tidsend tidsmaller time time_cmp time_eq time_ge time_gt time_hash time_in time_larger time_le time_lt time_mi_interval time_mi_time time_ne time_out time_pl_interval time_recv time_send time_smaller time_transform timedate_pl timemi timepl timestamp timestamp_cmp timestamp_cmp_date timestamp_cmp_timestamptz timestamp_eq timestamp_eq_date timestamp_eq_timestamptz timestamp_ge timestamp_ge_date timestamp_ge_timestamptz timestamp_gt timestamp_gt_date timestamp_gt_timestamptz timestamp_hash timestamp_in timestamp_larger timestamp_le timestamp_le_date timestamp_le_timestamptz timestamp_lt timestamp_lt_date timestamp_lt_timestamptz timestamp_mi timestamp_mi_interval timestamp_ne timestamp_ne_date timestamp_ne_timestamptz timestamp_out timestamp_pl_interval timestamp_recv timestamp_send timestamp_smaller timestamp_sortsupport timestamp_transform timestamptypmodin timestamptypmodout timestamptz timestamptz_cmp timestamptz_cmp_date timestamptz_cmp_timestamp timestamptz_eq timestamptz_eq_date timestamptz_eq_timestamp timestamptz_ge timestamptz_ge_date timestamptz_ge_timestamp timestamptz_gt timestamptz_gt_date timestamptz_gt_timestamp timestamptz_in timestamptz_larger timestamptz_le timestamptz_le_date timestamptz_le_timestamp timestamptz_lt timestamptz_lt_date timestamptz_lt_timestamp timestamptz_mi timestamptz_mi_interval timestamptz_ne timestamptz_ne_date timestamptz_ne_timestamp timestamptz_out timestamptz_pl_interval timestamptz_recv timestamptz_send timestamptz_smaller timestamptztypmodin timestamptztypmodout timetypmodin timetypmodout timetz timetz_cmp timetz_eq timetz_ge timetz_gt timetz_hash timetz_in timetz_larger timetz_le timetz_lt timetz_mi_interval timetz_ne timetz_out timetz_pl_interval timetz_recv timetz_send timetz_smaller timetzdate_pl timetztypmodin timetztypmodout timezone(2069) timezone(1159) timezone(2037) timezone (2070) timezone (1026) timezone (2038) tintervalct tintervaleq tintervalge tintervalgt tintervalin tintervalle tintervalleneq tintervallenge tintervallengt tintervallenle tintervallenlt tintervallenne tintervallt tintervalne tintervalout tintervalov tintervalrecv tintervalsame tintervalsend tintervalstart to_ascii(1845) to_ascii(1847) to_ascii(1846) trigger_in trigger_out ts_match_qv ts_match_tq ts_match_tt ts_match_vq ts_rank ts_rank_cd ts_rewrite ts_stat ts_token_type ts_typanalyze tsmatchjoinsel tsmatchsel tsq_mcontained tsq_mcontains tsquery_and tsquery_cmp tsquery_eq tsquery_ge tsquery_gt tsquery_le tsquery_lt tsquery_ne tsquery_not tsquery_or tsqueryin tsqueryout tsqueryrecv tsquerysend tsrange tsrange_subdiff tstzrange tstzrange_subdiff tsvector_cmp tsvector_concat tsvector_eq tsvector_ge tsvector_gt tsvector_le tsvector_lt tsvector_ne tsvector_update_trigger tsvector_update_trigger_column tsvectorin tsvectorout tsvectorrecv tsvectorsend txid_current txid_current_snapshot txid_snapshot_in txid_snapshot_out txid_snapshot_recv txid_snapshot_send txid_snapshot_xip txid_snapshot_xmax txid_snapshot_xmin txid_visible_in_snapshot uhc_to_utf8 unique_key_recheck unknownin unknownout unknownrecv unknownsend unnest utf8_to_big5 utf8_to_euc_cn utf8_to_euc_jis_2004 utf8_to_euc_jp utf8_to_euc_kr utf8_to_euc_tw utf8_to_gb18030 utf8_to_gbk utf8_to_iso8859 utf8_to_iso8859_1 utf8_to_johab utf8_to_koi8r utf8_to_koi8u utf8_to_shift_jis_2004 utf8_to_sjis utf8_to_uhc utf8_to_win uuid_cmp uuid_eq uuid_ge uuid_gt uuid_hash uuid_in uuid_le uuid_lt uuid_ne uuid_out uuid_recv uuid_send var_pop var_samp varbit varbit_in varbit_out varbit_recv varbit_send varbit_transform varbitcmp varbiteq varbitge varbitgt varbitle varbitlt varbitne varbittypmodin varbittypmodout varchar varchar_transform varcharin varcharout varcharrecv varcharsend varchartypmodin varchartypmodout variance void_in void_out void_recv void_send win_to_utf8 win1250_to_latin2 win1250_to_mic win1251_to_iso win1251_to_koi8r win1251_to_mic win1251_to_win866 win866_to_iso win866_to_koi8r win866_to_mic win866_to_win1251 xideq xideqint4 xidin xidout xidrecv xidsend xml xml_in - - - xml_out xml_recv xml_send - - xmlconcat2 - xmlvalidate pg_notify year_in year_out year_recv year_send yeartypmodin yeartypmodout year_eq year_ne year_lt year_le year_gt year_ge year_cmp year_hash year_larger year_smaller year_mi year_mi_int4 int4_mi_year year_pl year_pl_int4 int4_pl_year int4_year year_int4 date_year numeric_year text_year time_year timestamp_year timestamptz_year lpad_s int8numericle int8numericge btint12cmp btint14cmp btint18cmp btint116cmp btint1numericcmp btint21cmp btint216cmp btint2numericcmp btint41cmp btint416cmp btint4numericcmp btint81cmp btint816cmp btint8numericcmp btint161cmp btint162cmp btint164cmp btint168cmp btnumericint1cmp btnumericint2cmp btnumericint4cmp btnumericint8cmp btint16cmp hashint16 hashint1_numeric hashint2_numeric hashint4_numeric hashint8_numeric int12eq int12ne int12lt int12gt int12le int12ge int14eq int14ne int14lt int14gt int14le int14ge int18eq int18ne int18lt int18gt int18le int18ge int116eq int116ne int116lt int116gt int116le int116ge int1numericeq int1numericne int1numericlt int1numericgt int1numericle int1numericge numericint1eq numericint1ne numericint1ne numericint1gt numericint1le numericint1ge numericint2eq numericint2ne numericint2lt numericint2gt numericint2le numericint2ge numericint4eq numericint4ne numericint4lt numericint4gt numericint4le numericint4ge numericint8eq numericint8ne numericint8lt numericint8gt numericint8le numericint8ge int161eq int161ne int161lt int161gt int161le int161ge int162eq int162ne int162lt int162gt int162le int162ge int164eq int164ne int164lt int164gt int164le int164ge int168eq int168ne int168lt int168gt int168le int168ge int21eq int21ne int21lt int21gt int21le int21ge int216eq int216ne int216lt int216gt int216le int216ge int2numericeq int2numericne int2numericlt int2numericgt int2numericle int2numericge int41eq int41ne int41lt int41gt int41le int41ge int416eq int416ne int416lt int416gt int416le int416ge int4numericeq int4numericne int4numericlt int4numericgt int4numericle int4numericge int81eq int81ne int81lt int81gt int81le int81ge int816eq int816ne int816lt int816gt int816le int816ge int8numericeq int8numericne int8numericlt int8numericgt bpcharlikebpchar bpcharnlikebpchar pg_stat_get_db_conflict_force_recycle pg_stat_get_db_conflict_standby_query_timeout pg_stat_get_db_conflict_truncate - - 升级模式下,不支持调用变长参数的系统函数,如concat。
  • 方式二:国密TLS双向认证 前置条件:用户已经获取服务端所需要的国密TLS证书和私钥文件,并完成服务端配置;同时已经获取客户端所需要的client.key.pk8、client_enc.key.pk8、client.crt、client_enc.crt、cacert.pem证书与私钥文件,以下步骤4介绍如何将证书配置在客户端。关于证书生成和获取、服务端配置的具体操作,请联系管理员或参见Openssl相关文档和命令。 使用国密TLS双向认证的方式连接数据库的前三个步骤和国密TLS单向认证方式的前三个步骤一样,具体如下:
  • 方式一:国密TLS单向认证 前置条件:用户已经获取服务端所需要的国密TLS证书和私钥文件,并完成服务端配置;同时已经获取客户端所需要的cacert.pem根证书,以下步骤4介绍如何将根证书配置在客户端。关于证书生成和获取、服务端配置的具体操作,请联系管理员或参见Openssl相关文档和命令。 使用国密TLS单向认证的方式连接数据库的命令如下: 导入java.sql.Connection、java.sql.DriverManager、java.util.Properties。 此外,用户需要根据实际的应用场景,再导入其他的接口和类,详见JDBC接口参考。 import java.sql.Connection; import java.sql.DriverManager; import java.util.Properties; 指定数据库urls($ip、$port、database需要用户自行修改)、用户名和密码。 从环境变量EXAMPLE_USERNAME_ENV和EXAMPLE_PASSWORD_ENV获取的用户名和密码设置为Properties对象的属性值。 String urls = "jdbc:gaussdb://$ip:$port/database"; String userName = System.getenv("EXAMPLE_USERNAME_ENV"); String password = System.getenv("EXAMPLE_PASSWORD_ENV"); Properties urlProps = new Properties(); urlProps.setProperty("user", userName); urlProps.setProperty("password", password); 设置SSL属性为true,设置sslmode为verify-ca。 urlProps.setProperty("ssl", "true"); urlProps.setProperty("sslmode", "verify-ca"); 国密TLS单向认证:在客户端配置cacert.pem根证书,sslgmcipher仅允许配置为ECC_SM4_SM3。 sslrootcert和sslgmcipher参数的具体说明,详见sslrootcert和sslgmcipher。 urlProps.setProperty("sslrootcert", "cacert.pem"); urlProps.setProperty("sslgmcipher", "ECC_SM4_SM3"); 加载驱动。 在代码运行工具(如IDE)中添加gaussdbjdbc.jar包。 执行以下命令加载数据库驱动程序“com.huawei.gaussdb.jdbc.Driver”。 Class.forName("com.huawei.gaussdb.jdbc.Driver"); 创建数据库连接。 调用DriverManager.getConnection(String url, Properties info),进行数据库连接。 Connection conn = DriverManager.getConnection(urls,urlProps);
  • 使用证书认证 前置条件:登录GaussDB管理控制台,在“实例管理”页面,单击实例名称进入“基本信息”页面,单击“SSL”处的,下载根证书或捆绑包,将根证书ca.pem放置在客户端。 使用客户端配置证书的方式连接数据库的命令如下: 导入java.sql.Connection、java.sql.DriverManager、java.util.Properties。 此外,用户需要根据实际的应用场景,再导入其他的接口和类,详见JDBC接口参考。 import java.sql.Connection; import java.sql.DriverManager; import java.util.Properties; 指定数据库sourceURL($ip、$port、database需要用户自行修改)、用户名和密码。 用户名和密码直接写到代码中有很大的安全风险,建议在环境变量中存放。 String sourceURL = "jdbc:gaussdb://$ip:$port/database"; Properties urlProps = new Properties(); urlProps.setProperty("user", System.getenv("EXAMPLE_USERNAME_ENV")); urlProps.setProperty("password", System.getenv("EXAMPLE_PASSWORD_ENV")); 设置SSL属性为true,在客户端配置ca.pem根证书。 urlProps.setProperty("ssl", "true"); urlProps.setProperty("sslrootcert", "ca.pem");; 配置sslmode。 sslmode设置值:require、verify-ca、verify-full,参数介绍详见sslmode。客户根据应用场景选择一种即可。 /* 设置sslmode为require */ urlProps.setProperty("sslmode", "require"); /* 设置sslmode为verify-ca */ urlProps.setProperty("sslmode", "verify-ca"); /* 设置sslmode为verify-full(Linux下验证) */ urlProps.setProperty("sslmode", "verify-full"); 加载驱动。 在代码运行工具(如IDE)中添加gaussdbjdbc.jar包。 执行以下命令加载数据库驱动程序“com.huawei.gaussdb.jdbc.Driver”。 Class.forName("com.huawei.gaussdb.jdbc.Driver"); 创建数据库连接。 调用DriverManager.getConnection(String url, Properties info),进行数据库连接。 Connection conn = DriverManager.getConnection(sourceURL,urlProps);
  • 以UDS方式连接 Unix domain socket用于同一主机上不同进程间的数据交换,通过添加junixsocket获取套接字工厂使用。 前置条件:引用junixsocket-core-XXX.jar、junixsocket-common-XXX.jar、junixsocket-native-common-XXX.jar,XXX为版本号,引用的这些jar包版本号需要一致。 以UDS方式连接数据库的步骤如下: 导入java.sql.Connection、java.sql.DriverManager、java.util.Properties。 此外,用户需要根据实际的应用场景,再导入其他的接口和类,详见JDBC接口参考。 import java.sql.Connection; import java.sql.DriverManager; import java.util.Properties; 指定数据库的用户名和密码。 用户名和密码直接写到代码中有很大的安全风险,建议在环境变量中存放。并将用户名和密码设置为Properties对象的属性值。 String userName = System.getenv("EXAMPLE_USERNAME_ENV"); String password = System.getenv("EXAMPLE_PASSWORD_ENV"); Properties properties = new Properties(); properties.setProperty("user", userName); properties.setProperty("password", password); 加载驱动。 在代码运行工具(如IDE)中添加gaussdbjdbc.jar包。 执行以下命令加载数据库驱动程序“com.huawei.gaussdb.jdbc.Driver”。 String driver = "com.huawei.gaussdb.jdbc.Driver"; Class.forName(driver); 指定数据库的$ip、$port、database、socketFactory和socketFactoryArg。 $ip和$port需要用户自行修改,连接主机名database必须设置为“localhost”,socketFactory设置为org.newsclub.net.unix.AFUNIXSocketFactory$FactoryArg,socketFactoryArg设置为[path-to-the-unix-socket],实现以UDS方式连接数据库。socketFactory和socketFactoryArg参数的具体说明,详见socketFactory和socketFactoryArg。 socketFactoryArg参数配置根据真实路径进行配置,与GUC参数unix_socket_directory的值保持一致。 Connection conn = DriverManager.getConnection("jdbc:gaussdb://$ip:$port/database?socketFactory=org.newsclub.net.unix" + ".AFUNIXSocketFactory$FactoryArg&socketFactoryArg=[path-to-the-unix-socket]",properties); System.out.println("Connection Successful!"); 父主题: 连接数据库
  • Aggregate模型 建Aggregate模型表语句示例如下: CREATE TABLE IF NOT EXISTS example_db.example_tbl ( `user_id` LARGEINT NOT NULL COMMENT "用户id", `date` DATE NOT NULL COMMENT "数据灌入日期时间", `city` VARCHAR(20) COMMENT "用户所在城市", `age` SMALLINT COMMENT "用户年龄", `gender` TINYINT COMMENT "用户性别", `last_visit_date` DATETIME REPLACE DEFAULT "1970-01-01 00:00:00" COMMENT "用户最后一次访问时间", `cost` BIGINT SUM DEFAULT "0" COMMENT "用户总消费", `max_dwell_time` INT MAX DEFAULT "0" COMMENT "用户最大停留时间", `min_dwell_time` INT MIN DEFAULT "99999" COMMENT "用户最小停留时间" ) AGGREGATE KEY(`user_id`, `date`, `city`, `age`, `gender`) DISTRIBUTED BY HASH(`user_id`) BUCKETS 1 PROPERTIES ( "replication_allocation" = "tag.location.default: 1" ); 当导入数据时,对于Key列相同的行会聚合成一行,而Value列会按照设置的AggregationType进行聚合。 AggregationType目前有以下四种聚合方式: SUM:求和,多行的Value进行累加。 REPLACE:替代,下一批数据中的Value会替换之前导入过的行中的Value。 MAX:保留最大值。 MIN:保留最小值。 表中的列按照是否设置了AggregationType,分为Key (维度列) 和Value(指标列)。例如,没有设置AggregationType的,如user_id、date、age等称为Key,而设置了AggregationType的称为Value。
  • Unique模型 读时合并 这类表没有聚合需求,只需保证主键(user_id和username)的唯一性。且Unique模型的读时合并实现完全可以用Aggregate模型中的REPLACE方式替代。建表示例如下: CREATE TABLE IF NOT EXISTS example_db.example_tbl ( `user_id` LARGEINT NOT NULL COMMENT "用户id", `username` VARCHAR(50) NOT NULL COMMENT "用户昵称", `city` VARCHAR(20) COMMENT "用户所在城市", `age` SMALLINT COMMENT "用户年龄", `gender` TINYINT COMMENT "用户性别", `phone` LARGEINT COMMENT "用户电话", `address` VARCHAR(500) COMMENT "用户地址", `register_time` DATETIME COMMENT "用户注册时间" ) UNIQUE KEY(`user_id`, `username`) DISTRIBUTED BY HASH(`user_id`) BUCKETS 1 PROPERTIES ( "replication_allocation" = "tag.location.default: 1" );
  • Duplicate模型 数据既没有主键,也没有聚合需求时,可以使用Duplicate数据模型建表。Duplicate模型数据完全按照导入文件中的数据进行存储,不会有任何聚合。即使两行数据完全相同,也都会保留。 而在建表语句中指定的DUPLICATE KEY,只是用来指明底层数据按照指定的列进行排序。 建Duplicate模型表语句如下: CREATE TABLE IF NOT EXISTS example_db.example_tbl ( `timestamp` DATETIME NOT NULL COMMENT "日志时间", `type` INT NOT NULL COMMENT "日志类型", `error_code` INT COMMENT "错误码", `error_msg` VARCHAR(1024) COMMENT "错误详细信息", `op_id` BIGINT COMMENT "负责人id", `op_time` DATETIME COMMENT "处理时间" ) DUPLICATE KEY(`timestamp`, `type`, `error_code`) DISTRIBUTED BY HASH(`type`) BUCKETS 1 PROPERTIES ( "replication_allocation" = "tag.location.default: 1" );
  • 数据模型的选择建议 因为数据模型在建表时就已经确定,且无法修改。所以,选择一个合适的数据模型非常重要。 Aggregate模型可以通过预聚合,极大地降低聚合查询时所需扫描的数据量和查询的计算量,适合有固定模式的报表类查询场景,但是该模型不适用于count(*)查询。同时因为固定了Value列上的聚合方式,在进行其他类型的聚合查询时,需要考虑语义正确性。 Unique模型针对需要唯一主键约束的场景,可以保证主键唯一性约束。但是无法利用ROLLUP等预聚合带来的查询优势。 对于聚合查询有较高性能需求的用户,推荐使用写时合并实现。 Unique模型仅支持整行更新,如果用户既需要唯一主键约束,又需要更新部分列(例如将多张源表导入到一张Doris表的场景),则可以考虑使用Aggregate模型,同时将非主键列的聚合类型设置为REPLACE_IF_NOT_NULL。 Duplicate适合任意维度的Ad-hoc查询。虽然无法利用预聚合的特性,但是不受聚合模型的约束,可以发挥列存模型的优势(只读取相关列,而不需要读取所有Key列)。
  • 前提条件 创建或获取该任务中创建Loader作业的业务用户和密码。 确保用户已授权访问作业执行时操作的HDFS/OBS目录和数据。 获取SFTP服务器使用的用户和密码,且该用户具备SFTP服务器上源文件的读取权限。如果源文件在导入后文件名要增加后缀,则该用户还需具备源文件的写入权限。 检查磁盘空间,确保没有出现告警且余量满足导入、导出数据的大小。 使用Loader从SFTP服务器导入数据时,确保SFTP服务器输入路径目录名、输入路径的子目录名及子文件名不能包含特殊字符/\"':;,中的任意字符。 如果设置的作业需要使用指定YARN队列功能,该用户需要已授权有相关YARN队列的权限。 设置任务的用户需要获取该任务的执行权限,并获取该任务对应的连接的使用权限。
  • 示例 -- 删除原生/管控表 Create table simple(id int, name string); Insert into simple values(1,'abc'),(2,'def'); select * from simple; id | name ----|------ 1 | abc 2 | def (2 rows) Truncate table simple; select * from simple; id | name ----|------ (0 rows) --删除表分区 Create table tb_truncate_part (id int, name string) partitioned by (age int, state string); Insert into tb_truncate_part values (1,'abc',10,'ap'),(2,'abc',10,'up'),(3,'abc',20,'ap'),(4,'abc',20,'up'); select * from tb_truncate_part; id | name | age | state ----|------|-----|------- 2 | abc | 10 | up 3 | abc | 20 | ap 1 | abc | 10 | ap 4 | abc | 20 | up (4 rows) Truncate table tb_truncate_part partition (state = 'ap', age = 10); select * from tb_truncate_part; id | name | age | state ----|------|-----|------- 4 | abc | 20 | up 2 | abc | 10 | up 3 | abc | 20 | ap (3 rows)
  • Schema演进支持范围 Schema演进支持范围: 支持列(包括嵌套列)相关的增、删、改、位置调整等操作。 不支持对分区列做演进。 不支持对Array类型的嵌套列进行增、删、列操作。 表1 引擎支持矩阵 引擎 DDL操作Schema 变更后的Hudi表写操作支持 变更后的Hudi表读操作支持 变更后Hudi表compaction支持 SparkSQL Y Y Y Y Flink N Y Y Y HetuEngine N N Y N Hive N N Y N
  • Color函数 bar(x, width) 描述:使用默认的低频红色和高频绿色渲染ANSI条形图中的单个条形。例如,如果将25%的x和40的宽度传递给此函数。将绘制一个10个字符的红色条形,后跟30个空格,以创建一个40个字符的条形。 bar(x, width, low_color, high_color) 描述:在ANSI条形图中以指定宽度绘制一条直线。参数x是0到1之间的一个双精度值。x的值超出[0,1]范围将被截断为0或1值。low_color和high_color捕获用于水平条形图任一端的颜色。例如,如果x为0.5,宽度为80,low_color为0xFF0000,high_color为0x00FF00,则此函数将返回一个40个字符的条形,该条形由红色(0xFF0000)和黄色(0xFFFF00)组成,其余80个字符条为用空格填充。 select bar(0.75,80,rgb(255,0,0),rgb(0,255,0)); render(b) 描述:根据布尔值返回对错符号。 select render(true),render(false); 父主题: HetuEngine SQL函数和操作符说明
  • Data masking函数 数据脱敏(Data masking) 指对某些敏感信息通过脱敏规则进行数据的变形,实现敏感隐私数据的可靠保护。 mask_first_n(string str[, int n]) →varchar 描述:返回str的屏蔽版本,前n个值被屏蔽。大写字母被转为"X",小写字母被转为"x",数字被转为"n"。 select mask_first_n('Aa12-5678-8765-4321', 4); _col0 --------------------- Xxnn-5678-8765-4321 (1 row) mask_last_n(string str[, int n]) →varchar 描述:返回str的屏蔽版本,后n个值被屏蔽。大写字母被转为"X",小写字母被转为"x",数字被转为"n"。 select mask_last_n('1234-5678-8765-Hh21', 4); _col0 --------------------- 1234-5678-8765-Xxnn (1 row) mask_show_first_n(string str[, int n]) →varchar 描述:返回str的屏蔽版本,只显示前n个字符。大写字母被转为"X",小写字母被转为"x",数字被转为"n"。 select mask_show_first_n('1234-5678-8765-4321',4); _col0 --------------------- 1234-nnnn-nnnn-nnnn (1 row) mask_show_flairst_n(string str[, int n]) →varchar 描述:返回str的屏蔽版本,只显示后n个值。大写字母被转为"X",小写字母被转为"x",数字被转为"n"。 select mask_show_last_n('1234-5678-8765-4321',4); _col0 --------------------- nnnn-nnnn-nnnn-4321 (1 row) mask_hash(string|char|varchar str) →varchar 描述:返回基于str的散列值。散列是一致的,可以用于跨表连接被屏蔽的值。对于非字符串类型,返回NULL。 select mask_hash('panda'); _col0 ------------------------------------------------------------------ a7cdf5d0586b392473dd0cd08c9ba833240006a8a7310bf9bc8bf1aefdfaeadb (1 row) 父主题: HetuEngine SQL函数和操作符说明
共100000条