华为云用户手册

  • 变量类型 NVARCHAR修改为NCHAR VARING。 Netezza语法 迁移后语法 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 CREATE OR REPLACE PROCEDURE "NTZDB"."EDW"."SP_NTZ_NVARCHAR" (CHARACTER VARYING(8)) RETURNS INTEGER LANGUAGE NZPLSQL AS BEGIN_PROC DECLARE V_PAR_DAY ALIAS for $1; V_PRCNAME NVARCHAR(50):= 'SP_O_HXYW_LNSACCTINFO_H'; V_CNT INTEGER; V_STEP_INFO NVARCHAR(500); D_TIME_START TIMESTAMP:= CURRENT_TIMESTAMP; O_RETURN INTEGER; BEGIN O_RETURN := 0; --写日志,记录过程开始运行 CALL SP_ LOG _EXEC(V_PRCNAME,V_PAR_DAY,D_TIME_START,0,0,'过程开始运行!',' '); V_STEP_INFO := '1.初始化'; RETURN O_RETURN; END; END_PROC; 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 CREATE OR REPLACE FUNCTION "EDW"."SP_NTZ_NVARCHAR" (CHARACTER VARYING(8)) RETURN INTEGER AS V_PAR_DAY ALIAS for $1; V_PRCNAME NCHAR VARYING(50):= 'SP_O_HXYW_LNSACCTINFO_H'; V_CNT INTEGER; V_STEP_INFO NCHAR VARYING(500); D_TIME_START TIMESTAMP:= CURRENT_TIMESTAMP; O_RETURN INTEGER; BEGIN O_RETURN := 0; /* 写日志,记录过程开始运行 */ SP_LOG_EXEC(V_PRCNAME,V_PAR_DAY,D_TIME_START,0,0,'过程开始运行!',' '); V_STEP_INFO := '1.初始化'; RETURN O_RETURN; END; /
  • 支持TRANSLATE函数 SQL TRANSLATE()函数用另一个字符序列替换字符串中的一组字符。该函数一次只能替换一个字符。 Netezza语法 迁移后语法 1 2 3 TRANSLATE(param1) TRANSLATE(1st param, 2nd param, 3rd param) TRANSLATE(1st param, 2nd param, 3rd param, 4th param) 1 2 3 UPPER(param1) TRANSLATE(1st param, 3rd param, RPAD(2nd param, LENGTH(3rd param), ' ')) TRANSLATE(1st param, 3rd param, RPAD(2nd param, LENGTH(3rd param), 4th param)) 如果包含一个参数,只需执行UPPER。 UPPER(param1) 如果包含两个参数,抛出错误。 如果包含三个参数: TRANSLATE(1st param, 3rd param, RPAD(2nd param, LENGTH(3rd param), ' ')) 如果包含四个参数: TRANSLATE(1st param, 3rd param, RPAD(2nd param, LENGTH(3rd param), 4th param))
  • TRANSACTION DSC工具在迁移MySQL事务处理语句时会根据 GaussDB (DWS)特性进行相应适配。 输入示例 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 ##该声明仅适用于会话中执行的下一个单个事务 SET TRANSACTION ISOLATION LEVEL READ COMMITTED; SET TRANSACTION ISOLATION LEVEL REPEATABLE READ; SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED; SET TRANSACTION ISOLATION LEVEL SERIALIZABLE; SET TRANSACTION READ ONLY; SET TRANSACTION READ WRITE; SET TRANSACTION ISOLATION LEVEL READ COMMITTED,READ ONLY; SET TRANSACTION ISOLATION LEVEL SERIALIZABLE,READ WRITE; ##使用SESSION关键字,适用于当前会话中执行的所有后续事务 START TRANSACTION; SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED; SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED; SET SESSION TRANSACTION ISOLATION LEVEL SERIALIZABLE; SET SESSION TRANSACTION ISOLATION LEVEL SERIALIZABLE; commit ; 输出示例 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 --该声明仅适用于会话中执行的下一个单个事务 SET LOCAL TRANSACTION ISOLATION LEVEL READ COMMITTED; SET LOCAL TRANSACTION ISOLATION LEVEL REPEATABLE READ; SET LOCAL TRANSACTION ISOLATION LEVEL READ UNCOMMITTED; SET LOCAL TRANSACTION ISOLATION LEVEL SERIALIZABLE; SET LOCAL TRANSACTION READ ONLY; SET LOCAL TRANSACTION READ WRITE; SET LOCAL TRANSACTION ISOLATION LEVEL READ COMMITTED READ ONLY; SET LOCAL TRANSACTION ISOLATION LEVEL SERIALIZABLE READ WRITE; --使用SESSION关键字,适用于当前会话中执行的所有后续事务 START TRANSACTION; SET SESSION CHARACTERIS TICS AS TRANSACTION ISOLATION LEVEL READ COMMITTED; SET SESSION CHARACTERISTI CS AS TRANSACTION ISOLATION LEVEL READ COMMITTED; SET SESSION CHARACTERISTICS AS TRANSACTION ISOLATION LEVEL SERIALIZABLE; SET SESSION CHARACTERISTICS AS TRANSACTION ISOLATION LEVEL SERIALIZABLE; COMMIT WORK; 父主题: 事物管理
  • STRAGG STRAGG是一个字符串聚合函数,用于将多个行的值收集到一个用逗号分隔的字符串中。 输入:STRAGG 1 2 3 SELECT DEPTNO,ENAME,STRAGG(ename) over (partition by deptno order by ename RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) AS ENAME_STR FROM EMP; 输出 1 2 3 4 5 6 SELECT DEPTNO,ENAME,STRING_AGG ( ename,',') over( partition BY deptno ORDER BY ename RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS ENAME_STR FROM EMP ;
  • LISTAGG LISTAGG根据ORDER BY子句对每个组中的列值进行排序,并将排序后的结果拼接起来。 图1 输入:LISTAGG 图2 输出:LISTAGG 设置MigSupportForListAgg=false后,可迁移LISTAGG。 输入:LISTAGG 1 2 3 4 5 6 7 SELECT LISTAGG(BRANCH_ID, ',') WITHIN GROUP(ORDER BY AREA_ORDER) PRODUCTRANGE FROM (SELECT DISTINCT VB.BRANCH_ID, VB.VER_ID, VB.AREA_ORDER FROM SPMS_VERSION_BRANCH VB, SPMS_NODE_SET NS WHERE VB.BRANCH_TYPE IN ('1', '3') AND VB.AGENCY_BRANCH = NS.BRANCH_ID); 输出 1 2 3 4 5 6 7 8 9 10 11 12 13 SELECT LISTAGG (BRANCH_ID,',') WITHIN GROUP ( ORDER BY AREA_ORDER ) PRODUCTRANGE FROM ( SELECT DISTINCT VB.BRANCH_ID ,VB.VER_ID ,VB.AREA_ORDER FROM SPMS_VERSION_BRANCH VB ,SPMS_NODE_SET NS WHERE VB.BRANCH_TYPE IN ( '1','3') AND VB.AGENCY_BRANCH = NS.BRANCH_ID) ;
  • TITLE和CREATE VIEW 输入 REPLACE VIEW ${STG_VIEW}.B971_AUMSUMMARY${TABLE_SUFFIX_INC} AS LOCK TABLE ${STG_DATA}.B971_AUMSUMMARY${TABLE_SUFFIX_INC} FOR AC CES S SELECT AUM_DATE (TITLE ' ') ,CLNTCODE (TITLE ' ') ,ACCTYPE (TITLE ' ') ,CCY (TITLE ' ') ,BAL_AMT (TITLE ' ') ,MON_BAL_AMT (TITLE ' ') ,HK_CLNTCODE (TITLE ' ') ,MNT_DATE (TITLE ' ') FROM ${STG_DATA}.B971_AUMSUMMARY${TABLE_SUFFIX_INC}; it should be migrated as below: CREATE OR REPLACE VIEW ${STG_VIEW}.B971_AUMSUMMARY${TABLE_SUFFIX_INC} AS /*LOCK TABLE ${STG_DATA}.B971_AUMSUMMARY${TABLE_SUFFIX_INC} FOR ACCESS */ SELECT AUM_DATE /* (TITLE ' ') */ ,CLNTCODE /* (TITLE ' ') */ ,ACCTYPE /* (TITLE ' ') */ ,CCY /* (TITLE ' ') */ ,BAL_AMT /* (TITLE ' ') */ ,MON_BAL_AMT /* (TITLE ' ') */ ,HK_CLNTCODE /* (TITLE ' ') */ ,MNT_DATE /* (TITLE ' ') */ FROM ${STG_DATA}.B971_AUMSUMMARY${TABLE_SUFFIX_INC}; 输出 CREATE OR REPLACE VIEW ${STG_VIEW}.B971_AUMSUMMARY${TABLE_SUFFIX_INC} AS /*LOCK TABLE ${STG_DATA}.B971_AUMSUMMARY${TABLE_SUFFIX_INC} FOR ACCESS */ SELECT AUM_DATE /* (TITLE ' ') */ ,CLNTCODE /* (TITLE ' ') */ ,ACCTYPE /* (TITLE ' ') */ ,CCY /* (TITLE ' ') */ ,BAL_AMT /* (TITLE ' ') */ ,MON_BAL_AMT /* (TITLE ' ') */ ,HK_CLNTCODE /* (TITLE ' ') */ ,MNT_DATE /* (TITLE ' ') */ FROM ${STG_DATA}.B971_AUMSUMMARY${TABLE_SUFFIX_INC};
  • 数据库 在MySQL中,DATABASE 是一种模式对象,等同于Oracle、GaussDB(DWS)数据库的SCHEMA概念。DSC工具迁移时考虑了以下两个场景。 创建数据库 输入示例 create database IF NOT EXISTS dbname1 CHARACTER SET=utf8 COLLATE=utf8_unicode_ci; create database IF NOT EXISTS dbname2; drop database if exists dbname1; drop database if exists dbname2; 输出示例 CREATE SCHEMA "dbname1"; CREATE SCHEMA "dbname2"; DROP SCHEMA IF EXISTS "dbname1"; DROP SCHEMA IF EXISTS "dbname2"; 使用数据库 输入示例 drop database if exists test; create database if not exists test; use test; 输出示例 DROP SCHEMA IF EXISTS "test"; CREATE SCHEMA "test"; SET CURRENT_SCHEMA = "test"; 父主题: 模式对象与数据定义(DDL)
  • IF NOT EXISTS DSC支持转换 IF NOT EXISTS关键字,迁移过程保留。 输入示例 1 2 3 4 5 6 7 8 9 10 DROP TABLE IF EXISTS `categories`; CREATE TABLE IF NOT EXISTS `categories` ( `CategoryID` tinyint(5) unsigned NOT NULL PRIMARY KEY AUTO_INCREMENT, `CategoryName` varchar(15) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '' , `Description` mediumtext CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL , `Picture` varchar(50) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '', UNIQUE (`CategoryID`) )ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=latin1; DROP TABLE IF EXISTS `categories`; 输出示例 1 2 3 4 5 6 7 8 DROP TABLE IF EXISTS "public"."categories"; CREATE TABLE IF NOT EXISTS "public"."categories" ( "categoryid" SMALLSERIAL NOT NULL PRIMARY KEY, "categoryname" VARCHAR(60) NOT NULL DEFAULT '', "description" TEXT NOT NULL, "picture" VARCHAR(200) NOT NULL DEFAULT '' ) WITH (ORIENTATION = ROW, COMPRESSION = NO) NOCOMPRESS DISTRIBUTE BY HASH ("categoryid"); DROP TABLE IF EXISTS "public"."categories"; 父主题: 表(可选参数、操作)
  • LIKE 表克隆 MySQL数据库中,可以使用 CREATE TABLE .. LIKE ..方式克隆旧表结构创建新表。GaussDB(DWS)也支持这种建表方式。DSC工具迁移时会添加额外的表属性信息。 输入示例 1 2 3 4 5 6 7 8 CREATE TABLE IF NOT EXISTS `public`.`runoob_tbl_old`( `dataType_1` YEAR, `dataType_2` YEAR(4), `dataType_3` YEAR DEFAULT '2018', `dataType_4` TIME DEFAULT NULL ); CREATE TABLE `runoob_tbl` (like `runoob_tbl_old`); 输出示例 1 2 3 4 5 6 7 8 9 10 11 12 13 CREATE TABLE IF NOT EXISTS "public"."runoob_tbl_old" ( "datatype_1" SMALLINT, "datatype_2" SMALLINT, "datatype_3" SMALLINT DEFAULT '2018', "datatype_4" TIME WITHOUT TIME ZONE DEFAULT NULL ) WITH ( ORIENTATION = ROW, COMPRESSION = NO ) NOCOMPRESS DISTRIBUTE BY HASH ("datatype_1"); CREATE TABLE "public"."runoob_tbl"( LIKE "public"."runoob_tbl_old" INCLUDING COMMENTS INCLUDING CONSTRAINTS INCLUDING DEFAULTS INCLUDING INDEXES INCLUDING STORAGE); 父主题: 表(可选参数、操作)
  • SHOW_TSC_INFO 查询当前节点TSC信息。该视图仅8.2.1及以上集群版本支持。 表1 返回值字段 名称 类型 描述 node_name text 节点名称。 tsc_mult bigint TSC换算乘数。 tsc_shift bigint TSC换算位移数。 tsc_frequency float8 TSC频率。 tsc_use_freqency boolean 是否使用TSC频率进行时间换算。 tsc_ready boolean 是否可以使用TSC频率进行时间换算。 tsc_scalar_error_info text 获取TSC换算信息的错误信息。 tsc_freq_error_info text 获取TSC频率的错误信息。 父主题: 系统视图
  • 处理数据导入错误 根据获取的错误信息,请对照下表,处理数据导入错误。 表2 处理数据导入错误 错误信息 原因 解决办法 missing data for column "r_reason_desc" 数据源文件中的列数比外表定义的列数少。 对于TEXT格式的数据源文件,由于转义字符(\)导致delimiter(分隔符)错位或者quote(引号字符)错位造成的错误。 示例:目标表存在3列字段,导入的数据如下所示。由于存在转义字符“\”,分隔符“|”被转义为第二个字段的字段值,导致第三个字段值缺失。 BE|Belgium\|1 由于列数少导致的报错,选择下列办法解决: 在数据源文件中,增加列“r_reason_desc”的字段值。 在创建外表时,将参数“fill_missing_fields”设置为“on”。即当导入过程中,若数据源文件中一行数据的最后一个字段缺失,则把最后一个字段的值设置为NULL,不报错。 对由于转义字符导致的错误,需检查报错的行中是否含有转义字符(\)。若存在,建议在创建外表时,将参数“noescaping”(是否不对'\'和后面的字符进行转义)设置为true。 extra data after last expected column 数据源文件中的列数比外表定义的列数多。 在数据源文件中,删除多余的字段值。 在创建外表时,将参数“ignore_extra_data”设置为“on”。即在导入过程中,若数据源文件比外表定义的列数多,则忽略行尾多出来的列。 invalid input syntax for type numeric: "a" 数据类型错误。 在数据源文件中,修改输入字段的数据类型。根据此错误信息,请将输入的数据类型修改为numeric。 null value in column "staff_id" violates not-null constraint 非空约束。 在数据源文件中,增加非空字段信息。根据此错误信息,请增加“staff_id”列的值。 duplicate key value violates unique constraint "reg_id_pk" 唯一约束。 删除数据源文件中重复的行。 通过设置关键字“DISTINCT”,从SELECT结果集中删除重复的行,保证导入的每一行都是唯一的。 1 INSERT INTO reasons SELECT DISTINCT * FROM foreign_tpcds_reasons; value too long for type character varying(16) 字段值长度超过限制。 在数据源文件中,修改字段值长度。根据此错误信息,字段值长度限制为VARCHAR2(16)。
  • logging_module 参数说明:用于设置或者显示模块日志在服务端的可输出性。该参数属于会话级参数,不建议通过gs_guc工具来设置。 参数类型:USERSET 取值范围:字符串 默认值:所有模块日志在服务端是不输出的,可由SHOW logging_module查看。 设置方法:首先,可以通过SHOW logging_module来查看哪些模块是支持可控制的。例如,查询输出结果为: 1 2 3 4 5 show logging_module; logging_module ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ALL,on(),off(DFS,GUC,HDFS,ORC,SLRU,MEM_CTL,AUTOVAC,ANALYZE,CACHE,ADIO,SSL,GDS,TBLSPC,WLM,SPACE,OBS,EXECUTOR,VEC_EXECUTOR,STREAM,LLVM,OPT,OPT_REWRITE,OPT_JOIN,OPT_AGG,OPT_SUBPLAN,OPT_SETOP,OPT_CARD,OPT_SKEW,SMP,UDF,COOP_ANALYZE,WLMCP,ACCELERATE,PLANHINT,PARQUET,CARBONDATA,SNAPSHOT,XACT,HANDLE,CLOG,TQUAL,EC,REMOTE,CN_RETRY,PLSQL,TEXTSEARCH,SEQ,INSTR,COMM_IPC,COMM_PA RAM ,CSTORE,JOB,STREAMPOOL,STREAM_CTESCAN) (1 row) 支持可控制的模块使用大写来标识,特殊标识ALL用于对所有模块日志进行设置。可以使用on/off来控制模块日志的输出。设置SSL模块日志为可输出,使用如下命令: 1 2 3 4 5 6 7 8 set logging_module='on(SSL)'; SET show logging_module; logging_module ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ ALL,on(SSL),off(DFS,GUC,HDFS,ORC,SLRU,MEM_CTL,AUTOVAC,ANALYZE,CACHE,ADIO,GDS,TBLSPC,WLM,SPACE,OBS,EXECUTOR,VEC_EXECUTOR,STREAM,LLVM,OPT,OPT_REWRITE,OPT_JOIN,OPT_AGG,OPT_SUBPLAN,OPT_SETOP,OPT_CARD,OPT_SKEW,SMP,UDF,COOP_ANALYZE,WLMCP,A CCELERATE,PLANHINT,PARQUET,CARBONDATA,SNAPSHOT,XACT,HANDLE,CLOG,TQUAL,EC,REMOTE,CN_RETRY,PLSQL,TEXTSEARCH,SEQ,INSTR,COMM_IPC,COMM_PARAM,CSTORE,JOB,STREAMPOOL,STREAM_CTESCAN) (1 row) 可以看到模块SSL的日志输出被打开。 ALL标识是相当于一个快捷操作,即对所有模块的日志可输出进行开启或关闭。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 set logging_module='off(ALL)'; SET show logging_module; logging_module ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ALL,on(),off(DFS,GUC,HDFS,ORC,SLRU,MEM_CTL,AUTOVAC,ANALYZE,CACHE,ADIO,SSL,GDS,TBLSPC,WLM,SPACE,OBS,EXECUTOR,VEC_EXECUTOR,STREAM,LLVM,OPT,OPT_REWRITE,OPT_JOIN,OPT_AGG,OPT_SUBPLAN,OPT_SETOP,OPT_CARD,OPT_SKEW,SMP,UDF,COOP_ANALYZE,WLMCP, ACCELERATE,PLANHINT,PARQUET,CARBONDATA,SNAPSHOT,XACT,HANDLE,CLOG,TQUAL,EC,REMOTE,CN_RETRY,PLSQL,TEXTSEARCH,SEQ,INSTR,COMM_IPC,COMM_PARAM,CSTORE,JOB,STREAMPOOL,STREAM_CTESCAN) (1 row) set logging_module='on(ALL)'; SET show logging_module; logging_module ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ALL,on(DFS,GUC,HDFS,ORC,SLRU,MEM_CTL,AUTOVAC,ANALYZE,CACHE,ADIO,SSL,GDS,TBLSPC,WLM,SPACE,OBS,EXECUTOR,VEC_EXECUTOR,STREAM,LLVM,OPT,OPT_REWRITE,OPT_JOIN,OPT_AGG,OPT_SUBPLAN,OPT_SETOP,OPT_CARD,OPT_SKEW,SMP,UDF,COOP_ANALYZE,WLMCP,ACCELE RATE,PLANHINT,PARQUET,CARBONDATA,SNAPSHOT,XACT,HANDLE,CLOG,TQUAL,EC,REMOTE,CN_RETRY,PLSQL,TEXTSEARCH,SEQ,INSTR,COMM_IPC,COMM_PARAM,CSTORE,JOB,STREAMPOOL,STREAM_CTESCAN),off() (1 row) 所有模块中,COMM_IPC必须显式的打开/开闭,执行以下命令都可以将该模块的日志打开: 1 2 3 4 set logging_module='on(ALL)'; SET set logging_module='on(COMM_IPC)'; SET 设置成功后,COMM_IPC模块日志不会自动关闭,关闭COMM_IPC模块的日志,必须手动执行关闭命令,以下两条命令都可以将该模块日志关闭: 1 2 3 4 set logging_module='off(ALL)'; SET set logging_module='off(COMM_IPC)'; SET 依赖关系:该参数依赖于log_min_messages参数的设置。
  • debug_print_plan 参数说明:用于控制打印查询执行结果。 参数类型:SIGHUP 取值范围:布尔型 on表示开启打印结果的功能。 off表示关闭打印结果的功能。 默认值:off 只有当日志的级别为log及以上时,debug_print_parse、debug_print_rewritten和debug_print_plan的调试信息才会输出。当这些选项打开时,调试信息只会记录在服务器的日志中,而不会输出到客户端的日志中。通过设置client_min_messages和log_min_messages参数可以改变日志级别。 在打开debug_print_plan开关的情况下需尽量避免调用gs_encrypt_aes128及gs_decrypt_aes128函数,避免敏感参数信息在日志中泄露的风险。同时建议用户在打开debug_print_plan开关生成的日志中对gs_encrypt_aes128及gs_decrypt_aes128函数的参数信息进行过滤后再提供给外部维护人员定位,日志使用完成后请及时删除。
  • log_duration 参数说明:控制记录每个已完成SQL语句的执行时间。对使用扩展查询协议的客户端、会记录语法分析、绑定和执行每一步所花费的时间。 参数类型:SUSET 取值范围:布尔型 设置为off ,该选项与log_min_duration_statement的不同之处在于log_min_duration_statement强制记录查询文本。 设置为on并且log_min_duration_statement大于零,记录所有持续时间,但是仅记录超过阈值的语句。这可用于在高负载情况下搜集统计信息。 默认值:on
  • log_error_verbosity 参数说明:控制服务器日志中每条记录的消息写入的详细度。 参数类型:SUSET 取值范围:枚举类型 terse输出不包括DETAIL、HINT、QUERY及CONTEXT错误信息的记录。 verbose输出包括SQLSTATE错误代码 、源代码文件名、函数名及产生错误所在的行号。 default输出包括DETAIL、HINT、QUERY及CONTEXT错误信息的记录,不包括SQLSTATE错误代码 、源代码文件名、函数名及产生错误所在的行号。 默认值:default
  • log_statement 参数说明:控制记录SQL语句。对于使用扩展查询协议的客户端,记录接收到执行消息的事件和绑定参数的值(内置单引号要双写)。 参数类型:SUSET 即使log_statement设置为all,包含简单语法错误的语句也不会被记录,因为仅在完成基本的语法分析并确定了语句类型之后才记录日志。在使用扩展查询协议的情况下,在执行阶段之前(语法分析或规划阶段)同样不会记录。将log_min_error_statement设为ERROR或更低才能记录这些语句。 取值范围:枚举类型 none表示不记录语句。 ddl表示记录所有的数据定义语句,比如CREATE、ALTER和DROP语句。 mod表示记录所有DDL语句,还包括数据修改语句INSERT、UPDATE、DELETE、TRUNCATE和COPY FROM 。 all表示记录所有语句,PREPARE、EXECUTE和EXPLAIN ANALYZE语句也同样被记录。 默认值:none
  • SYS_GUID SYS_GUID是内嵌函数,返回表中某一行的全域唯一识别元(GUID)。SYS_GUID不使用参数,返回一个16字节的RAW值。 输入 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 CREATE TABLE sad.fnd_data_change_logs_t ( logid NUMBER, table_name VARCHAR2 (40) NOT NULL /* ENABLE */ ,table_key_columns VARCHAR2 (200), table_key_values VARCHAR2 (200), column_name VARCHAR2 (40) NOT NULL /* ENABLE */ ,column_change_from_value VARCHAR2 (200), column_change_to_value VARCHAR2 (200), organization_id NUMBER, created_by NUMBER (15, 0) NOT NULL /* ENABLE */ ,creation_date DATE NOT NULL /* ENABLE */ ,last_updated_by NUMBER (15, 0) NOT NULL /* ENABLE */ ,last_update_date DATE NOT NULL /* ENABLE */ ,last_update_login NUMBER (15, 0) DEFAULT 0 NOT NULL /* ENABLE */ ,description VARCHAR2 (500), sys_id VARCHAR2 (32) DEFAULT Sys_guid( ) /*, SUPPLEMENTAL LOG DATA (ALL) COLUMNS*/ ); 输出 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 CREATE TABLE sad.fnd_data_change_logs_t ( logid NUMBER, table_name VARCHAR2 (40) NOT NULL /* ENABLE */ ,table_key_columns VARCHAR2 (200), table_key_values VARCHAR2 (200), column_name VARCHAR2 (40) NOT NULL /* ENABLE */ ,column_change_from_value VARCHAR2 (200), column_change_to_value VARCHAR2 (200), organization_id NUMBER, created_by NUMBER (15, 0) NOT NULL /* ENABLE */ ,creation_date DATE NOT NULL /* ENABLE */ ,last_updated_by NUMBER (15, 0) NOT NULL /* ENABLE */ ,last_update_date DATE NOT NULL /* ENABLE */ ,last_update_login NUMBER (15, 0) DEFAULT 0 NOT NULL /* ENABLE */ ,description VARCHAR2 (500), sys_id VARCHAR2 (32) DEFAULT MIG_ORA_EXT.Sys_guid( ) /*, SUPPLEMENTAL LOG DATA (ALL) COLUMNS*/ ); 父主题: Oracle语法迁移
  • INDEX_ALL 在ADB中,创建全列索引index_all='Y'。GaussDB(DWS)不支持该属性修改表定义信息,DSC迁移时会将该属性删除。 输入示例 1 2 3 4 5 6 7 DROP TABLE IF EXISTS unsupport_parse_test; CREATE TABLE `unsupport_parse_test` ( `username` int, `update` timestamp not null default current_timestamp on update current_timestamp , clustered key clustered_key(shopid ASC, datetype ASC) )index_ALL = 'Y'; DROP TABLE IF EXISTS unsupport_parse_test; 输出示例 1 2 3 4 5 6 DROP TABLE IF EXISTS "public"."unsupport_parse_test"; CREATE TABLE "public"."unsupport_parse_test" ( "username" INTEGER, "update" TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT CURRENT_TIMESTAMP ) WITH (ORIENTATION = ROW, COMPRESSION = NO) NOCOMPRESS DISTRIBUTE BY HASH ("username"); DROP TABLE IF EXISTS "public"."unsupport_parse_test"; 父主题: 表(可选参数、操作)
  • PG_USER_MAPPING PG_USER_MAPPING系统表存储从本地用户到远程的映射。 需要有系统管理员权限才可以访问此系统表。普通用户可以使用视图PG_USER_MAPPINGS进行查询。 表1 PG_USER_MAPPING字段 名字 类型 引用 描述 oid oid - 行标识符(隐藏属性,必须明确选择才会显示)。 umuser oid PG_AUTHID.oid 被映射的本地用户的OID,如果用户映射是公共的则为0。 umserver oid PG_FOREIGN_SERVER.oid 包含此映射的外部服务器的OID。 umoptions text[] - 用户映射指定选项,使用“keyword=value”格式的字符串。 父主题: 系统表
  • LOCK DSC工具在迁移MySQL 事务处理锁表语句时会根据GaussDB(DWS)特性进行相应适配。 输入示例 1 2 3 4 5 6 7 8 9 10 11 12 13 14 ## A. START TRANSACTION; LOCK TABLES `mt`.`runoob_tbl` WRITE,`mt`.`runoob_tb2` READ; commit; ## B. START TRANSACTION; LOCK TABLES `mt`.`runoob_tbl` WRITE; commit; ## C. START TRANSACTION; LOCK TABLES `mt`.`runoob_tbl` READ,`mt`.`runoob_tbl` AS t1 READ; commit; 输出示例 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 -- A. START TRANSACTION; LOCK TABLE "mt"."runoob_tbl" IN ACCESS EXCLUSIVE MODE; LOCK TABLE "mt"."runoob_tb2" IN ACCESS SHARE MODE; COMMIT WORK; -- B. START TRANSACTION; LOCK TABLE "mt"."runoob_tbl" IN ACCESS EXCLUSIVE MODE; COMMIT WORK; -- C. START TRANSACTION; LOCK TABLE "mt"."runoob_tbl" IN ACCESS SHARE MODE; COMMIT WORK; 父主题: 事物管理
  • 创建带索引分区表 如果配置参数tdMigrateRANGE_N为true。 输入 CREATE SET TABLE SC.TAB , NO FALLBACK, NO BEFORE JOURNAL, NO AFTER JOURNAL, CHECKSUM=DEFAULT, DEFAULT MERGEBLOCKRATIO ( ACCOUNT_NUM VARCHAR(255) CHARACTER SET LATIN NOT CASESPECIFIC NOT NULL ,ACCOUNT_MODIFIER_NUM CHAR(18) CHARACTER SET LATIN NOT CASESPECIFIC NOT NULL ,END_DT DATE FORMAT 'YYYY-MM-DD' ,UPD_TXF_BATCHTD INTEGER COMPRESS ) PRIMARY INDEX XPKT0300_AGREEMENT (ACCOUNT_NUM,ACCOUNT_MODIFIER_NUM) PARTITION BY RANGE_N(END_DT BETWEEN '2001-01-01' AND '2020-12-31' EACH INTERVAL '1' DAY, NO RANGE ,UNKNOWN) INDEX (UPD_TXF_BATCHTD) ; 输出 CREATE TABLE SC.TAB ( ACCOUNT_NUM VARCHAR( 255 ) /* CHARACTER SET LATIN*/ /* NOT CASESPECIFIC*/ NOT NULL ,ACCOUNT_MODIFIER_NUM CHAR( 18 ) /* CHARACTER SET LATIN*/ /* NOT CASESPECIFIC*/ NOT NULL ,END_DT DATE ,UPD_TXF_BATCHTD INTEGER /* COMPRESS */ ) DISTRIBUTE BY HASH ( ACCOUNT_NUM ,ACCOUNT_MODIFIER_NUM ) PARTITION BY RANGE (END_DT) ( PARTITION TAB_1 start ('2001-01-01') END ('2020-12-31') EVERY ( INTERVAL '1' DAY ) ) ; CREATE INDEX ON SC.TAB (UPD_TXF_BATCHTD) LOCAL;
  • 类型对照 表1 数字类型对照表 MySQL数字类型 MySQL INPUT GaussDB(DWS) OUTPUT DEC DEC DEC[(M[,D])] [UNSIGNED] [ZEROFILL] DECIMAL DECIMAL[(M[,D])] DECIMAL DECIMAL[(M[,D])] [UNSIGNED] [ZEROFILL] DECIMAL[(M[,D])] DOUBLE PRECISION DOUBLE PRECISION DOUBLE PRECISION [(M[,D])] [UNSIGNED] [ZEROFILL] DOUBLE PRECISION DOUBLE PRECISION DOUBLE DOUBLE[(M[,D])] [UNSIGNED] [ZEROFILL] DOUBLE PRECISION FIXED FIXED FIXED[(M[,D])] [UNSIGNED] [ZEROFILL] DECIMAL DECIMAL[(M[,D])] FLOAT FLOAT FLOAT [(M[,D])] [UNSIGNED] [ZEROFILL] FLOAT(p) [UNSIGNED] [ZEROFILL] REAL REAL REAL INT INT INT(p) [UNSIGNED] [ZEROFILL] INTEGER INTEGER(p) INTEGER INTEGER INTEGER(p) [UNSIGNED] [ZEROFILL] INTEGER INTEGER(p) MEDIUMINT MEDIUMINT MEDIUMINT(p) [UNSIGNED] [ZEROFILL] INTEGER INTEGER(p) NUMERIC NUMERIC NUMERIC [(M[,D])] [UNSIGNED] [ZEROFILL] DECIMAL DECIMAL[(M[,D])] REAL REAL[(M[,D])] REAL/DOUBLE PRECISION SMALLINT SMALLINT SMALLINT(p) [UNSIGNED] [ZEROFILL] SMALLINT TINYINT TINYINT TINYINT(n) TINYINT(n) ZEROFILL TINYINT(n) UNSIGNED ZEROFILL SMALLINT SMALLINT SMALLINT TINYINT TINYINT类型做转换时,如果存在无符号类型(UNSIGNED)修饰则转换为TINYINT,否则转换为SMALLINT。 REAL类型做转换时,默认转换为DOUBLE PRECISION,如果配置文件(features-mysql.properties)中table.database.realAsFlag标志为true时(默认false),转换为REAL 输入示例TINYINT 1 2 3 4 5 6 7 CREATE TABLE IF NOT EXISTS `runoob_dataType_test`( `dataType_1` TINYINT, `dataType_2` TINYINT(0), `dataType_3` TINYINT(255), `dataType_4` TINYINT(255) UNSIGNED ZEROFILL, `dataType_5` TINYINT(255) ZEROFILL ); 输出示例 1 2 3 4 5 6 7 8 9 10 11 CREATE TABLE IF NOT EXISTS "public"."runoob_datatype_test" ( "datatype_1" SMALLINT, "datatype_2" SMALLINT, "datatype_3" SMALLINT, "datatype_4" TINYINT, "datatype_5" SMALLINT ) WITH ( ORIENTATION = ROW, COMPRESSION = NO ) NOCOMPRESS DISTRIBUTE BY HASH ("datatype_1");
  • PG_STATIO_SYS_SEQUENCES PG_STATIO_SYS_SEQUENCES视图显示命名空间中所有系统表为序列的IO状态信息。 表1 PG_STATIO_SYS_SEQUENCES字段 名称 类型 描述 relid oid 序列OID。 schemaname name 序列中模式名。 relname name 序列名。 blks_read bigint 从序列中读取的磁盘块数。 blks_hit bigint 序列缓冲区命中数量。 父主题: 系统视图
  • 注意事项 一个gsql元命令的格式是反斜杠后面紧跟一个动词,然后是任意参数。参数命令动词和其他参数以任意个空白字符间隔。 要在参数里面包含空白,必须用单引号把它引起来。要在这样的参数里包含单引号,可以在前面加一个反斜杠。任何包含在单引号里的内容都会被进一步进行类似C语言的替换:\n(新行)、\t(制表符)、\b(退格)、\r(回车)、\f(换页)、\digits(八进制表示的字符)、\xdigits(十六进制表示的字符)。 用""包围的内容被当做一个命令行传入shell。该命令的输出(删除了结尾的新行)被当做参数值。 如果不带引号的参数以冒号(:)开头,它会被当做一个gsql变量,并且该变量的值最终会成为真正的参数值。 有些命令以一个SQL标识的名称(比如一个表)为参数。这些参数遵循SQL语法关于双引号的规则:不带双引号的标识强制转换成小写,而双引号保护字母不进行大小写转换,并且允许在标识符中使用空白。在双引号中,成对的双引号在结果名字中分析成一个双引号。比如,FOO"BAR"BAZ解析成fooBARbaz;而"Aweird""name"解析成A weird"name。 对参数的分析在遇到另一个不带引号的反斜杠时停止。这里会认为是一个新的元命令的开始。特殊的双反斜杠序列(\\)标识参数的结尾并将继续分析后面的SQL语句(如果存在)。这样SQL和gsql命令可以自由的在一行里面混合。但是在任何情况下,一条元命令的参数不能延续超过行尾。
  • PATTERN 很多\d命令都可以用一个PATTERN参数来指定要被显示的对象名称。在最简单的情况下,PATTERN正好就是该对象的准确名称。在PATTERN中的字符通常会被变成小写形式(就像在SQL名称中那样),例如\dt FOO将会显示名为foo的表。就像在SQL名称中那样,把PATTERN放在双引号中可以阻止它被转换成小写形式。如果需要在一个PATTERN中包括一个真正的双引号字符,则需要把它写成两个相邻的双引号,这同样是符合SQL引用标识符的规则。例如,\dt "FOO""BAR"将显示名为FOO"BAR(不是foo"bar)的表。和普通的SQL名称规则不同,不能只在PATTERN的一部分周围放上双引号,例如\dt FOO"FOO"BAR将会显示名为fooFOObar的表。 不使用PATTERN参数时,\d命令会显示当前schema搜索路径中可见的全部对象——这等价于用*作为PATTERN。所谓对象可见是指可以直接用名称引用该对象,而不需要用schema来进行限定。要查看数据库中所有的对象而不管它们的可见性,可以把*.*用作PATTERN。 如果放在一个PATTERN中,*将匹配任意字符序列(包括空序列),而?会匹配任意的单个字符(这种记号方法就像 Unix shell 的文件名PATTERN一样)。例如,\dt int*会显示名称以int开始的表。但是如果被放在双引号内,*和?就会失去这些特殊含义而变成普通的字符。 包含一个点号(.)的PATTERN被解释为一个schema名称模式后面跟上一个对象名称模式。例如,\dt foo*.*bar*会显示名称以foo开始的schema中所有名称包括bar的表。如果没有出现点号,那么模式将只匹配当前schema搜索路径中可见的对象。同样,双引号内的点号会失去其特殊含义并且变成普通的字符。 高级用户可以使用字符类等正则表达式记法,如[0-9]可以匹配任意数字。所有的正则表达式特殊字符都按照《开发指南》中的POSIX正则表达式所说的工作。以下字符除外: .会按照上面所说的作为一种分隔符。 *会被翻译成正则表达式记号.*。 ?会被翻译成.。 $则按字面意思匹配。 根据需要,可以通过书写?、(R+|)、(R|)和R?来分别模拟PATTERN字符.、R*和R?。$不需要作为一个正则表达式字符,因为PATTERN必须匹配整个名称,而不是像正则表达式的常规用法那样解释(换句话说,$会被自动地追加到PATTERN上)。如果不希望该PATTERN的匹配位置被固定,可以在开头或者结尾写上*。注意在双引号内,所有的正则表达式特殊字符会失去其特殊含义并且按照其字面意思进行匹配。另外,在操作符名称PATTERN中(即\do的PATTERN参数),正则表达式特殊字符也按照字面意思进行匹配。
  • 参数 表1 SQLSetEnvAttr参数 关键字 参数说明 EnviromentHandle 环境句柄。 Attribute 需设置的环境属性,可为如下值: SQL_ATTR_ODBC_VERSION:指定ODBC版本。 SQL_CONNECTION_POOLING:连接池属性。 SQL_OUTPUT_NTS:指明驱动器返回字符串的形式。 ValuePtr 指向对应Attribute的值。依赖于Attribute的值,ValuePtr可能是32位整型值,或为以空结束的字符串。 StringLength 如果ValuePtr指向字符串或二进制缓冲区,这个参数是*ValuePtr长度,如果ValuePtr指向整型,忽略StringLength。
  • 原型 1 2 3 4 SQLRETURN SQLSetEnvAttr(SQLHENV EnvironmentHandle SQLINTEGER Attribute, SQLPOINTER ValuePtr, SQLINTEGER StringLength);
  • RANGE_N在字符串列的分区 输入 CREATE SET TABLE SC.TAB , NO FALLBACK, NO BEFORE JOURNAL, NO AFTER JOURNAL, CHECKSUM=DEFAULT, DEFAULT MERGEBLOCKRATIO ( ACCOUNT_NUM VARCHAR(255) CHARACTER SET LATIN NOT CASESPECIFIC NOT NULL ,ACCOUNT_MODIFIER_NUM CHAR(18) CHARACTER SET LATIN NOT CASESPECIFIC NOT NULL ,DATA_SOURCE_ID CHAR(10) CHARACTER SET LATIN NOT CASESPECIFIC ,END_DT DATE FORMAT 'YYYY-MM-DD' ,UPD_TXF_BATCHTD INTEGER COMPRESS ) PRIMARY INDEX XPKT0300_AGREEMENT (ACCOUNT_NUM,ACCOUNT_MODIFIER_NUM) PARTITION BY ( RANGE_N(DATA_SOURCE_ID BETWEEN 'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z' AND 'ZZ', NO RANGE ,UNKNOWN) ,CASE_N(END_DT IS NULL , NO CASE , UNKNOWN)) ; 输出 CREATE TABLE SC.TAB ( ACCOUNT_NUM VARCHAR( 255 ) /* CHARACTER SET LATIN*/ /* NOT CASESPECIFIC*/ NOT NULL ,ACCOUNT_MODIFIER_NUM CHAR( 18 ) /* CHARACTER SET LATIN*/ /* NOT CASESPECIFIC*/ NOT NULL ,DATA_SOURCE_ID CHAR( 10 ) /* CHARACTER SET LATIN*/ /* NOT CASESPECIFIC*/ ,END_DT DATE ,UPD_TXF_BATCHTD INTEGER /* COMPRESS */ ) DISTRIBUTE BY HASH ( ACCOUNT_NUM ,ACCOUNT_MODIFIER_NUM )/* PARTITION BY ( RANGE_N ( DATA_SOURCE_ID BETWEEN 'A' ,'B' ,'C' ,'D' ,'E' ,'F' ,'G' ,'H' ,'I' ,'J' ,'K' ,'L' ,'M' ,'N' ,'O' ,'P' ,'Q' ,'R' ,'S' ,'T' ,'U' ,'V' ,'W' ,'X' ,'Y' ,'Z' AND 'ZZ' ,NO RANGE ,UNKNOWN ) ,*/ /* CASE_N(END_DT IS NULL , NO CASE , UNKNOWN)) */ ;
  • RANGE_N with comma seperated values 输入 CREATE TABLE orders10 (storeid INTEGER NOT NULL ,productid INTEGER NOT NULL ,orderdate DATE NOT NULL ,totalorders INTEGER NOT NULL) PRIMARY INDEX (storeid, productid) PARTITION BY ( RANGE_N(totalorders BETWEEN *, 100, 1000 AND *) ); 输出 CREATE TABLE orders10 (storeid INTEGER NOT NULL ,productid INTEGER NOT NULL ,orderdate DATE NOT NULL ,totalorders INTEGER NOT NULL) DISTRIBUTE BY HASH (storeid, productid) PARTITION BY RANGE (totalorders) ( PARTITION Orders10_0 END (100), PARTITION Orders10_1 END (1000), PARTITION Orders10_2 END (MAXVALUE) );
  • RANGE_N with * for start-date 输入 CREATE MULTISET TABLE Orders5 ( StoreNo SMALLINT, OrderNo INTEGER, OrderDate DATE, OrderTotal INTEGER ) PRIMARY INDEX(OrderNo) PARTITION BY RANGE_N ( OrderDate BETWEEN DATE * AND DATE '2016-12-31' EACH INTERVAL '1' YEAR, DATE '2017-01-01' EACH INTERVAL '1' MONTH, DATE '2020-01-01' AND DATE '2020-12-31' EACH INTERVAL '1' DAY ); 输出 CREATE TABLE Orders5 ( StoreNo SMALLINT, OrderNo INTEGER, OrderDate DATE, OrderTotal INTEGER ) DISTRIBUTE BY HASH (OrderNo) PARTITION BY RANGE (OrderDate) ( PARTITION Orders5_0 START (DATE '0001-01-01') END (DATE '2016-12-31') EVERY (INTERVAL '1' YEAR), PARTITION Orders5_1 START (DATE '2016-12-31') END (DATE '2020-01-01') EVERY (INTERVAL '1' MONTH), PARTITION Orders5_2 START (DATE '2020-01-01') END (DATE '2020-12-31') EVERY (INTERVAL '1' DAY) );
共100000条