华为云用户手册

  • 声明Hexadecimal Character Literal值 输入: SELECT (COALESCE(TRIM(BOTH FROM VTX_D_RPT_0017_WMSE12_01_01.ID),'')) ||'7E'xc||(COALESCE(TRIM(BOTH FROM VTX_D_RPT_0017_WMSE12_01_01.Code),'')) ||'7E'xc||(COALESCE(TRIM(BOTH FROM VTX_D_RPT_0017_WMSE12_01_01.Description),'')) ||'7E'xc||(COALESCE(TRIM(BOTH FROM VTX_D_RPT_0017_WMSE12_01_01.Name),'')) ||'7E'xc||(COALESCE(TRIM(BOTH FROM VTX_D_RPT_0017_WMSE12_01_01.Host_Product_Id),'')) FROM DP_VTXEDW.VTX_D_RPT_0017_WMSE12_01_01 VTX_D_RPT_0017_WMSE12_01_01 WHERE 1=1 ; 输出:
  • SUBTYPE SUBTYPE语句中,PL/SQL允许您定义自己的子类型或预定义数据类型的别名,有时称为抽象数据类型。 输入 CREATE OR REPLACE PACKAGE "SAD"."BAS_SUBTYPE_PKG" IS SUBTYPE CURRENCY IS BAS_PRICE_LIST_T.CURRENCY%TYPE; END bas_subtype_pkg; / CREATE OR REPLACE PACKAGE BODY "SAD"."BAS_SUBTYPE_PKG" IS BEGIN NULL; END bas_subtype_pkg; / --******************************************************************** CREATE OR REPLACE PACKAGE BODY SAD.bas_lookup_misc_pkg IS FUNCTION get_currency(pi_price_type IN NUMBER) RETURN VARCHAR2 IS v_currency bas_subtype_pkg.currency; BEGIN g_func_name := 'get_currency'; FOR rec_currency IN (SELECT currency FROM sad_price_type_v WHERE price_type_code = pi_price_type) LOOP v_currency := rec_currency.currency; END LOOP; RETURN v_currency; END get_currency; END SAD.bas_lookup_misc_pkg; /
  • TYPE命名约定 用户定义的类型允许定义数据类型,以模拟应用程序中数据的结构和行为。 输入 CREATE TYPE t_line AS ( product_line VARCHAR2 ( 30 ) ,product_amount NUMBER ) ; ; 输出 CREATE TYPE sad_dml_product_pkg.t_line AS ( product_line VARCHAR2 ( 30 ) ,product_amount NUMBER ) ; 输入 CREATE TYPE t_line AS ( product_line VARCHAR2 ( 30 ) ,product_amount NUMBER ) ;
  • EXTEND GaussDB (DWS)支持EXTEND关键字。 输入: EXTEND FUNCTION FUNC_EXTEND ( in_str IN VARCHAR2) RETURN ARRYTYPE AS v_count2 INTEGER; v_strlist arrytype; v_node VARCHAR2 (2000); BEGIN v_count2 := 0; v_strlist := arrytype (); FOR v_i IN 1 .. LENGTH (in_str) LOOP IF v_node IS NULL THEN v_node := ''; END IF; IF (v_count2 = 0) OR (v_count2 IS NULL) THEN EXIT; ELSE v_strlist.EXTEND (); v_strlist (v_i) := v_node; v_node := ''; END IF; END LOOP; RETURN v_strlist; END; / 输出 FUNCTION FUNC_EXTEND ( in_str IN VARCHAR2 ) RETURN ARRYTYPE AS v_count2 INTEGER ; v_strlist arrytype ; v_node VARCHAR2 ( 2000 ) ; BEGIN v_count2 := 0 ; v_strlist := arrytype ( ) ; FOR v_i IN 1.. LENGTH( in_str ) LOOP IF v_node IS NULL THEN v_node := '' ; END IF ; IF ( v_count2 = 0 ) OR( v_count2 IS NULL ) THEN EXIT ; ELSE v_strlist.EXTEND ( 1 ) ; v_strlist ( v_i ) := v_node ; v_node := '' ; END IF ; END LOOP ; RETURN v_strlist ; END ; /
  • LOW_PRIORITY MySQL INSERT插入语句使用LOW_PRIORITY修饰符时,则执行该INSERT延迟。 输入示例 1 2 3 4 5 6 # LOW_PRIORITY 低优先级 INSERT LOW_PRIORITY INTO exmp_tb2 VALUES( DEFAULT, '128.23', 'nice', '2018-10-11'); INSERT LOW_PRIORITY INTO exmp_tb2 VALUES(DEFAULT, DEFAULT, 'nice', '2018-12-14' ); INSERT LOW_PRIORITY INTO exmp_tb2 VALUES(DEFAULT, DEFAULT, 'nice', DEFAULT); INSERT LOW_PRIORITY INTO exmp_tb2 (tb2_id, tb2_price) VALUES(DEFAULT, DEFAULT); INSERT LOW_PRIORITY INTO exmp_tb2 (tb2_id, tb2_price, tb2_note) VALUES(DEFAULT, DEFAULT, DEFAULT); 输出示例 1 2 3 4 5 6 -- LOW_PRIORITY 低优先级 INSERT INTO "public"."exmp_tb2" VALUES (DEFAULT,'128.23','nice','2018-10-11'); INSERT INTO "public"."exmp_tb2" VALUES (DEFAULT,DEFAULT,'nice','2018-12-14'); INSERT INTO "public"."exmp_tb2" VALUES (DEFAULT,DEFAULT,'nice',DEFAULT); INSERT INTO "public"."exmp_tb2" ("tb2_id","tb2_price") VALUES (DEFAULT,DEFAULT); INSERT INTO "public"."exmp_tb2" ("tb2_id","tb2_price","tb2_note") VALUES (DEFAULT,DEFAULT,DEFAULT); 父主题: INSERT
  • Teradata 如果含有FORMAT参数的case语句未用半角括号“()”括起来,该语句不会处理。 例如: 1 case when column1='0' then column1='value' end (FORMAT 'YYYYMMDD')as alias1 在该示例中,case when column1='0' then column1='value' end未用半角括号括起,因此不会处理该语句。
  • ROUNDROBIN表 GaussDB(DWS)支持建立roundrobin表,根据实际需要设置表1中的参数•table.type进行配置。设置table.type=ROUND-ROBIN。 输入示例 1 2 3 4 5 CREATE TABLE charge_snapshot ( id bigint NOT NULL, profit_model integer, ladder_rebate_rule text ); 输出示例 1 2 3 4 5 CREATE TABLE "public"."charge_snapshot" ( "id" BIGINT NOT NULL, "profit_model" INTEGER, "ladder_rebate_rule" TEXT ) WITH (ORIENTATION = ROW, COMPRESSION = NO) NOCOMPRESS DISTRIBUTE BY ROUNDROBIN; 父主题: 表(可选参数、操作)
  • TYPE 将“MDSYS.MBRCOOR DLI ST”替换为“CLOB”。 Oracle语法 迁移后语法 1 2 3 4 5 create table product_part ( partid VARCHAR2(24), mbrcoords MDSYS.MBRCOORDLIST ); 1 2 3 4 5 CREATE TABLE product_part ( partid VARCHAR2(24), mbrcoords CLOB );
  • 列 xmax、xmin、left、right、maxvalue为Gauss关键字,这些关键字应全字母大写并加英文双引号("")。 Oracle语法 迁移后语法 1 2 3 4 5 6 7 8 create table product ( xmax VARCHAR2(20), xmin VARCHAR2(50), left VARCHAR2(50), right VARCHAR2(50), maxvalue VARCHAR2(50) ); 1 2 3 4 5 6 7 8 CREATE TABLE product1 ( "XMAX" VARCHAR2(20), "XMIN" VARCHAR2(50), "LEFT" VARCHAR2(50), "RIGHT" VARCHAR2(50), "MAXVALUE" VARCHAR2(50) );
  • SEGMENT CREATION GaussDB不支持SEGMENT CREATION { IMMEDIATE | DEFERRED },因此该语句在迁移后被注释掉,需要设置commentStorageParameter=true。 输入:TABLE,使用SEGMENT CREATION 1 2 3 4 5 6 7 8 9 10 11 12 13 CREATE TABLE T1 ( MESSAGE_CODE VARCHAR2(50), MAIL_TITLE VARCHAR2(1000), MAIL_BODY VARCHAR2(1000), MAIL_ADDRESS VARCHAR2(1000), MAIL_ADDRESS_CC VARCHAR2(1000) ) SEGMENT CREATION DEFERRED PCTFREE 10 PCTUSED 0 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOG GING STORAGE( INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT) TABLESPACE Test ;
  • 间隔分区 对于间隔分区,应该注释分区。 Oracle语法 迁移后语法 1 2 3 4 5 6 7 8 9 CREATE TABLE product ( product_id VARCHAR2(20), product_name VARCHAR2(50), manufacture_month DATE ) partition by range (manufacture_month) interval (NUMTODSINTERVAL (1, 'MONTH')) ( partition T_PARTITION_2018_11_LESS values less than (TO_DATE(' 2018-11-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS'))); 1 2 3 4 5 6 7 8 9 CREATE TABLE product ( product_id VARCHAR2(20), product_name VARCHAR2(50), manufacture_month DATE ) /*partition by range (manufacture_month) interval (NUMTODSINTERVAL (1, 'MONTH')) ( partition T_PARTITION_2018_11_LESS values less than (TO_DATE(' 2018-11-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS')))*/;
  • 分区(二) 在非分区表中,删除表“ALTER TABLE TRUNCATE PARTITION”中的数据。 Oracle语法 迁移后语法 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 CREATE TABLE product_list ( product_id VARCHAR2(20), Product_Name VARCHAR2(50), Year_Manufacture vARCHAR2(10) ) partition by list (Year_Manufacture) ( partition PART_2015 VALUES (2011,2012,2013,2014,2015) pctfree 10 initrans 1 , partition PART_2016 VALUES (2016) pctfree 10 initrans 1 , partition PART_2017 VALUES (2017) pctfree 10 initrans 1 , partition PART_2018 VALUES (2018) pctfree 10 initrans 1 , partition PART_2019 VALUES (2019) pctfree 10 initrans 1 , partition PART_2020 VALUES (2020) pctfree 10 initrans 1 , PARTITION PART_unknown VALUES (DEFAULT) ); CREATE OR REPLACE PROCEDURE List_test IS V_ID VARCHAR2(10); BEGIN EXECUTE IMMEDIATE 'ALTER TABLE product_list TRUNCATE PARTITION PART_2020; NULL; END; / CREATE OR REPLACE PROCEDURE List_test IS V_ID VARCHAR2(10); BEGIN EXECUTE IMMEDIATE 'ALTER TABLE product_list TRUNCATE PARTITION PART_' || V_ID; NULL; END; / 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 CREATE TABLE product_list ( product_id VARCHAR2(20), Product_Name VARCHAR2(50), Year_Manufacture vARCHAR2(10) ) /*partition by list (Year_Manufacture) ( partition PART_2015 VALUES (2011,2012,2013,2014,2015) pctfree 10 initrans 1 , partition PART_2016 VALUES (2016) pctfree 10 initrans 1 , partition PART_2017 VALUES (2017) pctfree 10 initrans 1 , partition PART_2018 VALUES (2018) pctfree 10 initrans 1 , partition PART_2019 VALUES (2019) pctfree 10 initrans 1 , partition PART_2020 VALUES (2020) pctfree 10 initrans 1 , PARTITION PART_unknown VALUES (DEFAULT) )*/; CREATE OR REPLACE PROCEDURE List_test IS V_ID VARCHAR2(10); BEGIN EXECUTE IMMEDIATE 'ALTER TABLE product_list TRUNCATE PARTITION PART_' || V_ID; NULL; END; / CREATE OR REPLACE PROCEDURE List_test IS V_ID VARCHAR2(10); BEGIN /* EXECUTE IMMEDIATE 'ALTER TABLE product_list TRUNCATE PARTITION PART_' || V_ID; */ IF 'PART_' || V_ID = 'PART_2015' THEN DELETE FROM product_list WHERE Year_Manufacture IN (2011,2012,2013,2014,2015); ELSIF 'PART_' || V_ID = 'PART_2016' THEN DELETE FROM product_list WHERE Year_Manufacture IN (2016); ELSIF 'PART_' || V_ID = 'PART_2017' THEN DELETE FROM product_list WHERE Year_Manufacture IN (2017); ELSIF 'PART_' || V_ID = 'PART_2018' THEN DELETE FROM product_list WHERE Year_Manufacture IN (2018); ELSIF 'PART_' || V_ID = 'PART_2019' THEN DELETE FROM product_list WHERE Year_Manufacture IN (2019); ELSIF 'PART_' || V_ID = 'PART_2020' THEN DELETE FROM product_list WHERE Year_Manufacture IN (2020); ELSE DELETE FROM product_list WHERE Year_Manufacture NOT IN (2011,2012,2013,2014,2015,2016,2017,2018,2019,2020); END IF; NULL; END; /
  • 分区(注释约束) oracle配置参数中“#分区表唯一或主键约束”为“comment_unique”。 Oracle语法 迁移后语法 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 CREATE TABLE TBL_ORACLE ( ID Number, Name VARCHAR2(100 BYTE), ADDRESS VARCHAR2(200 BYTE) ) TABLESPACE space1 PCTUSED 40 PCTFREE 0 INITRANS 1 MAXTRANS 255 NOLOGGING PARTITION BY RANGE (ID) ( PARTITION PART_2010 VALUES LESS THAN (10) NOLOGGING, PARTITION PART_2011 VALUES LESS THAN (20) NOLOGGING , PARTITION PART_2012 VALUES LESS THAN (MAXVALUE) NOLOGGING ) ENABLE ROW MOVEMENT; ALTER TABLE TBL_ORACLE ADD CONSTRAINT SAMPLE_PK PRIMARY KEY (ID); 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 CREATE UNLOGGED TABLE TBL_ORACLE ( ID NUMBER ,Name VARCHAR2 (100) ,ADDRESS VARCHAR2 (200) /*,CONSTRAINT SAMPLE_PK PRIMARY KEY (ID)*/ ) TABLESPACE space1 /*PCTUSED 40*/ PCTFREE 0 INITRANS 1 MAXTRANS 255 PARTITION BY RANGE (ID) ( PARTITION PART_2010 VALUES LESS THAN (10) ,PARTITION PART_2011 VALUES LESS THAN (20) ,PARTITION PART_2012 VALUES LESS THAN (MAXVALUE) ) ENABLE ROW MOVEMENT ;
  • 分区(一) 在非分区表中,为表“ALTER TABLE TRUNCATE PARTITION”添加注释。 Oracle语法 迁移后语法 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 CREATE TABLE product_range ( product_id VARCHAR2(20), Product_Name VARCHAR2(50), Year_Manufacture DATE ) partition by range (Year_Manufacture) ( partition Year_Manufacture values less than (TO_DATE(' 2007-01-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS')) pctfree 10 initrans 1 ); CREATE TABLE product_list ( product_id VARCHAR2(20), Product_Name VARCHAR2(50), Year_Manufacture vARCHAR2(10) ) partition by list (Year_Manufacture) ( partition P_2020 VALUES (2020) pctfree 10 initrans 1 ); CREATE OR REPLACE PROCEDURE Range_test IS V_ID VARCHAR2(10); BEGIN EXECUTE IMMEDIATE 'ALTER TABLE product TRUNCATE PARTITION PART'||V_ID; NULL; END; / CREATE OR REPLACE PROCEDURE List_test IS V_ID VARCHAR2(10); BEGIN EXECUTE IMMEDIATE 'ALTER TABLE product TRUNCATE PARTITION PART'||V_ID; NULL; END; / 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 CREATE TABLE product_range ( product_id VARCHAR2(20), Product_Name VARCHAR2(50), Year_Manufacture DATE ) partition by range (Year_Manufacture) ( partition Year_Manufacture values less than (TO_DATE(' 2007-01-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS')) pctfree 10 initrans 1 ); CREATE TABLE product_list ( product_id VARCHAR2(20), Product_Name VARCHAR2(50), Year_Manufacture vARCHAR2(10) ) /*partition by list (Year_Manufacture) ( partition P_2020 VALUES (2020) pctfree 10 initrans 1 )*/; CREATE OR REPLACE PROCEDURE Range_test IS V_ID VARCHAR2(10); BEGIN EXECUTE IMMEDIATE 'ALTER TABLE product TRUNCATE PARTITION PART'||V_ID; NULL; END; / CREATE OR REPLACE PROCEDURE List_test IS V_ID VARCHAR2(10); BEGIN /*EXECUTE IMMEDIATE 'ALTER TABLE product TRUNCATE PARTITION PART'||V_ID;*/ NULL; END; /
  • 未创建索引 如果ALTER TABLE中使用了INDEX或STORAGE参数,需要删掉。需要在CREATE TABLE中添加约束。 输入:PRIMARY KEY 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 CREATE TABLE CTP_ARM_CONFIG ( HOSTNAME VARCHAR2(50), OPNAME VARCHAR2(50), PA RAM TYPE VARCHAR2(2), PARAMVALUE NUMBER(*,0), MODIFYDATE DATE ) SEGMENT CREATION DEFERRED PCTFREE 10 PCTUSED 0 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING STORAGE( PCTINCREASE 0 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT) TABLESPACE SPMS_DATA ; ALTER TABLE CTP_ARM_CONFIG ADD CONSTRAINT PKCTP_ARM_CONFIG PRIMARY KEY (HOSTNAME, OPNAME) USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATIS TICS STORAGE( PCTINCREASE 0 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT) TABLESPACE SPMS_DATA ENABLE; 输出 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 CREATE TABLE CTP_ARM_CONFIG ( HOSTNAME VARCHAR2 (50) ,OPNAME VARCHAR2 (50) ,PARAMTYPE VARCHAR2 (2) ,PARAMVALUE NUMBER ( 38 ,0 ) ,MODIFYDATE DATE ,CONSTRAINT PKCTP_ARM_CONFIG PRIMARY KEY ( HOSTNAME ,OPNAME ) ) /*SEGMENT CREATION DEFERRED*/ /*PCTFREE 10*/ /*PCTUSED 0*/ /*INITRANS 1*/ /*MAXTRANS 255*/ /*NOCOMPRESS*/ /*LOGGING*/ /*STORAGE( BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)*/ /*TABLESPACE SPMS_DATA */ ;
  • PRIMARY KEY Oracle中如果存在两张表具有相同的主键字段,则在执行ALTER TABLE时需加上表名进行区分。 输入:PRIMARY KEY 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 CREATE TABLE CTP_ARM_CONFIG ( HOSTNAME VARCHAR2(50), OPNAME VARCHAR2(50), PARAMTYPE VARCHAR2(2), PARAMVALUE NUMBER(*,0), MODIFYDATE DATE ) SEGMENT CREATION DEFERRED PCTFREE 10 PCTUSED 0 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING STORAGE( PCTINCREASE 0 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT) TABLESPACE SPMS_DATA ; ALTER TABLE CTP_ARM_CONFIG ADD CONSTRAINT PKCTP_ARM_CONFIG PRIMARY KEY (HOSTNAME, OPNAME) USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTI CS STORAGE( PCTINCREASE 0 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT) TABLESPACE SPMS_DATA ENABLE;
  • 数据类型 删除数据类型中的BYTE关键字。 Oracle语法 迁移后语法 1 2 3 4 5 6 CREATE TABLE TBL_ORACLE ( ID Number, Name VARCHAR2(100 BYTE), ADDRESS VARCHAR2(200 BYTE) ); 1 2 3 4 5 6 CREATE TABLE TBL_ORACLE ( ID NUMBER ,Name VARCHAR2 (100) ,ADDRESS VARCHAR2 (200) ) ;
  • 分区(注释分区) oracle配置参数中“#分区表唯一或主键约束”为“comment_partition”。 Oracle语法 迁移后语法 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 CREATE TABLE TBL_ORACLE ( ID Number, Name VARCHAR2(100 BYTE), ADDRESS VARCHAR2(200 BYTE) ) TABLESPACE space1 PCTUSED 40 PCTFREE 0 INITRANS 1 MAXTRANS 255 NOLOGGING PARTITION BY RANGE (ID) ( PARTITION PART_2010 VALUES LESS THAN (10) NOLOGGING, PARTITION PART_2011 VALUES LESS THAN (20) NOLOGGING , PARTITION PART_2012 VALUES LESS THAN (MAXVALUE) NOLOGGING ) ENABLE ROW MOVEMENT; ALTER TABLE TBL_ORACLE ADD CONSTRAINT SAMPLE_PK PRIMARY KEY (ID); 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 CREATE UNLOGGED TABLE TBL_ORACLE ( ID NUMBER ,Name VARCHAR2 (100) ,ADDRESS VARCHAR2 (200) ,CONSTRAINT SAMPLE_PK PRIMARY KEY (ID) ) TABLESPACE space1 /*PCTUSED 40*/ PCTFREE 0 INITRANS 1 MAXTRANS 255 /* PARTITION BY RANGE(ID)(PARTITION PART_2010 VALUES LESS THAN(10) , PARTITION PART_2011 VALUES LESS THAN(20) , PARTITION PART_2012 VALUES LESS THAN(MAXVALUE) ) ENABLE ROW MOVEMENT */ ;
  • 索引重命名 DSC工具支持索引重命名,对索引名前加表名前缀防止索引名冲突(只支持创建有具体索引名的DDL语句,目前不支持删除索引的重命名,修改该参数需慎重) 修改配置 打开表1 features-mysql.properties文件中的配置参数配置文件,修改如下参数为true。(默认false:不进行重命名) 1 2 # 创建索引时,是否重新命名索引名 table.index.rename=true 输入示例 1 2 3 4 5 6 CREATE TABLE IF NOT EXISTS `CUSTOMER`( `NAME` VARCHAR(64) PRIMARY KEY, ID INTEGER, ID2 INTEGER); CREATE INDEX ID_INDEX USING BTREE ON CUSTOMER (ID); ALTER TABLE CUSTOMER ADD INDEX ID3_INDEX(ID2); 输出示例 1 2 3 4 5 6 CREATE TABLE IF NOT EXISTS "public"."customer" ( "name" VARCHAR(256) PRIMARY KEY, "id" INTEGER, "id2" INTEGER) WITH (ORIENTATION = ROW, COMPRESSION = NO) NOCOMPRESS DISTRIBUTE BY HASH ("name"); CREATE INDEX customer_id_index ON "public"."customer" USING BTREE ("id"); CREATE INDEX customer_id3_index ON "public"."customer" ("id2"); 父主题: 索引
  • 类型对照 表1 空间数据类型对照表 MySQL空间数据类型 MySQL INPUT GaussDB(DWS) OUTPUT GEOMETRY GEOMETRY GEOMETRY POINT POINT POINT LINESTRING LINESTRING POLYGON POLYGON POLYGON POLYGON MULTIPOINT MULTIPOINT BOX MULTILINESTRING MULTILINESTRING BOX MULTIPOLYGON MULTIPOLYGON POLYGON GEOMETRYCOLLECTION GEOMETRYCOLLECTION GEOMETRYCOLLECTION GEOMETRY可以存储任何类型的几何值。其他单值类型(POINT, LINESTRING和POLYGON)将其值限制为特定的几何类型。 GEOMETRYCOLLECTION可以存储任何类型的对象的集合。其他集合类型(MULTIPOINT, MULTILINESTRING, MULTIPOLYGON,和 GEOMETRYCOLLECTION)限制集合成员向那些具有特定的几何形状的类型。 输入示例 1 2 3 4 5 6 7 8 9 10 11 12 13 CREATE TABLE `t_geo_test2` ( `id` int(11) NOT NULL, `name` varchar(255), `geometry_1` geometry NOT NULL, `point_1` point NOT NULL, `linestring_1` linestring NOT NULL, `polygon_1` polygon NOT NULL, `multipoint_1` multipoint NOT NULL, `multilinestring_1` multilinestring NOT NULL, `multipolygon_1` multipolygon NOT NULL, `geometrycollection_1` geometrycollection NOT NULL, PRIMARY KEY (`id`) USING BTREE ) ENGINE = InnoDB; 输出示例 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 CREATE TABLE "public"."t_geo_test2" ( "id" INTEGER(11) NOT NULL, "name" VARCHAR(255), "geometry_1" GEOMETRY NOT NULL, "point_1" POINT NOT NULL, "linestring_1" POLYGON NOT NULL, "polygon_1" POLYGON NOT NULL, "multipoint_1" BOX NOT NULL, "multilinestring_1" BOX NOT NULL, "multipolygon_1" POLYGON NOT NULL, "geometrycollection_1" GEOMETRYCOLLECTION NOT NULL, PRIMARY KEY ("id") ) WITH ( ORIENTATION = ROW, COMPRESSION = NO ) NOCOMPRESS DISTRIBUTE BY HASH ("id");
  • 示例:多线程导入 规划数据服务器与集群处于同一内网,数据服务器IP为192.168.0.90,导入的数据源文件格式为CSV,同时导入2个目标表。 在数据库中创建导入的目标表tpcds.reasons1和tpcds.reasons2。 1 2 3 4 5 6 CREATE TABLE tpcds.reasons1 ( r_reason_sk integer not null, r_reason_id char(16) not null, r_reason_desc char(100) ) ; 1 2 3 4 5 6 CREATE TABLE tpcds.reasons2 ( r_reason_sk integer not null, r_reason_id char(16) not null, r_reason_desc char(100) ) ; 以root用户登录GDS数据服务器,创建数据文件存放目录“/input_data”,以及子目录“/input_data/import1/”和“/input_data/import2/”。 mkdir -p /input_data 将目标表tpcds.reasons1的数据源文件存放在数据服务器“/input_data/import1/”目录下,将目标表tpcds.reasons2的数据源文件存放在目录“/input_data/import2/”下。 (可选)创建用户及其所属的用户组。此用户用于启动GDS。若该用户及所属用户组已存在,可跳过此步骤。 groupadd gdsgrp useradd -g gdsgrp gds_user 修改数据服务器上数据文件及数据文件目录“/input_data”的属主为gds_user。 chown -R gds_user:gdsgrp /input_data 以gds_user用户登录数据服务器上启动GDS。 其中GDS安装路径为“/gds”,数据文件存放在“/input_data/”目录下,数据服务器所在IP为192.168.0.90,GDS监听端口为5000,以后台方式运行,设定并发度为2,并设定递归文件目录。 /gds/gds -d /input_data -p 192.168.0.90:5000 -H 10.10.0.1/24 -D -t 2 -r 在数据库中创建外表tpcds.foreign_tpcds_reasons1和tpcds.foreign_tpcds_reasons2用于接收数据服务器上的数据。 以下以外表tpcds.foreign_tpcds_reasons1为例,讲解设置的导入外表参数信息。 其中设置的导入模式信息如下所示: 导入模式为Normal模式。 由于启动GDS时,设置的数据源文件存放目录为“/input_data/”,GDS监听端口为5000,实际存放数据源文件目录为“/input_data/import1/”,所以设置参数“location”为“gsfs://192.168.0.90:5000/import1/*”。 设置的数据格式信息是根据导出时设置的详细数据格式参数信息指定的,参数设置如下所示: 数据源文件格式(format)为CSV。 编码格式(encoding)为UTF-8。 字段分隔符(delimiter)为E'\x08'。 引号字符(quote)为0x1b。 数据文件中空值(null)为没有引号的空字符串。 逃逸字符(escape)默认和quote相同。 数据文件是否包含标题行(header)为默认值false,即导入时数据文件第一行被识别为数据。 设置的导入容错性如下所示: 允许出现的数据格式错误个数(PER NODE REJECT LIMIT 'value')为unlimited,即接受导入过程中所有数据格式错误。 将数据导入过程中出现的数据格式错误信息(LOG INTO error_table_name)写入表err_tpcds_reasons1。 当数据源文件中一行的最后一个字段缺失(fill_missing_fields)时,自动设置为NULL。 根据以上信息,创建的外表tpcds.foreign_tpcds_reasons1如下所示: 1 2 3 4 5 6 CREATE FOREIGN TABLE tpcds.foreign_tpcds_reasons1 ( r_reason_sk integer not null, r_reason_id char(16) not null, r_reason_desc char(100) ) SERVER gsmpp_server OPTIONS (location 'gsfs://192.168.0.90:5000/import1/*', format 'CSV',mode 'Normal', encoding 'utf8', delimiter E'\x08', quote E'\x1b', null '',fill_missing_fields 'on')LOG INTO err_tpcds_reasons1 PER NODE REJECT LIMIT 'unlimited'; 参考以上设置,创建的外表tpcds.foreign_tpcds_reasons2如下所示: 1 2 3 4 5 6 CREATE FOREIGN TABLE tpcds.foreign_tpcds_reasons2 ( r_reason_sk integer not null, r_reason_id char(16) not null, r_reason_desc char(100) ) SERVER gsmpp_server OPTIONS (location 'gsfs://192.168.0.90:5000/import2/*', format 'CSV',mode 'Normal', encoding 'utf8', delimiter E'\x08', quote E'\x1b', null '',fill_missing_fields 'on')LOG INTO err_tpcds_reasons2 PER NODE REJECT LIMIT 'unlimited'; 通过外表tpcds.foreign_tpcds_reasons1和tpcds.foreign_tpcds_reasons2将数据分别导入tpcds.reasons1和tpcds.reasons2。 1 INSERT INTO tpcds.reasons1 SELECT * FROM tpcds.foreign_tpcds_reasons1; 1 INSERT INTO tpcds.reasons2 SELECT * FROM tpcds.foreign_tpcds_reasons2; 查询错误信息表err_tpcds_reasons1和err_tpcds_reasons2,处理数据导入错误。详细请参见处理错误表。 1 2 SELECT * FROM err_tpcds_reasons1; SELECT * FROM err_tpcds_reasons2; 待数据导入完成后,以gds_user用户登录数据服务器,停止GDS。 其中GDS进程号为128954。 ps -ef|grep gds gds_user 128954 1 0 15:03 ? 00:00:00 gds -d /input_data -p 192.168.0.90:5000 -D -t 2 -r gds_user 129003 118723 0 15:04 pts/0 00:00:00 grep gds kill -9 128954
  • 示例:多数据服务器并行导入 规划数据服务器与集群处于同一内网,数据服务器IP为192.168.0.90和192.168.0.91。数据源文件格式为CSV。 创建导入的目标表tpcds.reasons。 1 2 3 4 5 6 CREATE TABLE tpcds.reasons ( r_reason_sk integer not null, r_reason_id char(16) not null, r_reason_desc char(100) ); 以root用户登录每台GDS数据服务器,在两台数据服务器上,分别创建数据文件存放目录“/input_data”。以下以IP为192.168.0.90的数据服务器为例进行操作,剩余服务器上的操作与它一致。 mkdir -p /input_data (可选)创建用户及其所属的用户组。此用户用于启动GDS。若该类用户及所属用户组已存在,可跳过此步骤。 groupadd gdsgrp useradd -g gdsgrp gds_user 将数据源文件均匀分发至相应数据服务器的“/input_data”目录中。 修改每台数据服务器上数据文件及数据文件目录“/input_data”的属主为gds_user。以下以IP为192.168.0.90的数据服务器为例,进行操作。 chown -R gds_user:gdsgrp /input_data 以gds_user用户登录每台数据服务器上分别启动GDS。 其中GDS安装路径为“/opt/bin/dws/gds”,数据文件存放在“/input_data/”目录下,数据服务器所在IP为192.168.0.90和192.168.0.91,GDS监听端口为5000,以后台方式运行。 在IP为192.168.0.90的数据服务器上启动GDS。 /opt/bin/dws/gds/gds -d /input_data -p 192.168.0.90:5000 -H 10.10.0.1/24 -D 在IP为192.168.0.91的数据服务器上启动GDS。 /opt/bin/dws/gds/gds -d /input_data -p 192.168.0.91:5000 -H 10.10.0.1/24 -D 创建外表tpcds.foreign_tpcds_reasons用于接收数据服务器上的数据。 其中设置导入模式信息如下所示: 导入模式为Normal模式。 由于启动GDS时,设置的数据源文件存放目录为“/input_data”,GDS监听端口为5000,所以设置参数“location”为“gsfs://192.168.0.90:5000/* | gsfs://192.168.0.91:5000/*”。 设置数据格式信息是根据导出时设置的详细数据格式参数信息指定的,参数设置如下所示: 数据源文件格式(format)为CSV。 编码格式(encoding)为UTF-8。 字段分隔符(delimiter)为E'\x08'。 引号字符(quote)为0x1b。 数据文件中空值(null)为没有引号的空字符串。 逃逸字符(escape)默认和quote相同。 数据文件是否包含标题行(header)为默认值false,即导入时数据文件第一行被识别为数据。 设置导入容错性如下所示: 允许出现的数据格式错误个数(PER NODE REJECT LIMIT 'value')为unlimited,即接受导入过程中所有数据格式错误。 将数据导入过程中出现的数据格式错误信息(LOG INTO error_table_name)写入表err_tpcds_reasons。 根据以上信息,创建的外表如下所示: 1 2 3 4 5 6 7 CREATE FOREIGN TABLE tpcds.foreign_tpcds_reasons ( r_reason_sk integer not null, r_reason_id char(16) not null, r_reason_desc char(100) ) SERVER gsmpp_server OPTIONS (location 'gsfs://192.168.0.90:5000/* | gsfs://192.168.0.91:5000/*', format 'CSV',mode 'Normal', encoding 'utf8', delimiter E'\x08', quote E'\x1b', null '', fill_missing_fields 'false') LOG INTO err_tpcds_reasons PER NODE REJECT LIMIT 'unlimited'; 通过外表tpcds.foreign_tpcds_reasons,将数据导入目标表tpcds.reasons。 1 INSERT INTO tpcds.reasons SELECT * FROM tpcds.foreign_tpcds_reasons; 查询错误信息表err_tpcds_reasons,处理数据导入错误。详细请参见处理错误表。 1 SELECT * FROM err_tpcds_reasons; 待数据导入完成后,以gds_user用户登录每台数据服务器,分别停止GDS。 以下以IP为192.168.0.90的数据服务器为例,停止GDS。其中GDS进程号为128954。 ps -ef|grep gds gds_user 128954 1 0 15:03 ? 00:00:00 gds -d /input_data -p 192.168.0.90:5000 -D gds_user 129003 118723 0 15:04 pts/0 00:00:00 grep gds kill -9 128954
  • DROP删除表 GaussDB(DWS)与MySQL都支持使用DROP语句删除表,但GaussDB(DWS)不支持在DROP语句中使用 RESTRICT | CASCADE 关键字。DSC工具迁移时会将上述关键字移除。 输入示例 1 2 3 4 5 6 7 CREATE TABLE IF NOT EXISTS `public`.`express_elb_server`( `runoob_id` VARCHAR(10), `runoob_title` VARCHAR(100) NOT NULL, `runoob_author` VARCHAR(40) NOT NULL, `submission_date` VARCHAR(10) )ENGINE=InnoDB DEFAULT CHARSET=utf8; DROP TABLE `public`.`express_elb_server` RESTRICT; 输出示例 1 2 3 4 5 6 7 8 9 10 11 CREATE TABLE IF NOT EXISTS "public"."express_elb_server" ( "runoob_id" VARCHAR(40), "runoob_title" VARCHAR(400) NOT NULL, "runoob_author" VARCHAR(160) NOT NULL, "submission_date" VARCHAR(40) ) WITH ( ORIENTATION = ROW, COMPRESSION = NO ) NOCOMPRESS DISTRIBUTE BY HASH ("runoob_id"); DROP TABLE "public"."express_elb_server"; 父主题: 表(可选参数、操作)
  • MAX_ROWS 在MySQL中,MAX_ROWS表示在表中存储的最大行数。DSC迁移过程时会将该属性删除。 输入示例 1 2 3 4 5 6 7 8 9 CREATE TABLE `public`.`runoob_alter_test`( `dataType1` int NOT NULL AUTO_INCREMENT, `dataType2` DOUBLE(20,8), `dataType3` TEXT NOT NULL, PRIMARY KEY(`dataType1`) ); ALTER TABLE runoob_alter_test MAX_ROWS 100000; ALTER TABLE runoob_alter_test MAX_ROWS=100000; 输出示例 1 2 3 4 5 6 7 8 9 10 CREATE TABLE "public"."runoob_alter_test" ( "datatype1" SERIAL NOT NULL, "datatype2" DOUBLE PRECISION, "datatype3" TEXT NOT NULL, PRIMARY KEY ("datatype1") ) WITH ( ORIENTATION = ROW, COMPRESSION = NO ) NOCOMPRESS DISTRIBUTE BY HASH ("datatype1"); 父主题: 表(可选参数、操作)
  • 类型对照 表1 日期和时间类型对照表 MySQL日期时间类型 MySQL INPUT GaussDB(DWS) OUTPUT DATETIME DATETIME[(fsp)] TIMESTAMP[(fsp)] WITHOUT TIME ZONE TIME TIME[(fsp)] TIME[(fsp)] WITHOUT TIME ZONE TIMESTAMP TIMESTAMP[(fsp)] TIMESTAMP[(fsp)] WITH TIME ZONE YEAR YEAR[(4)] SMALLINT(4) 该fsp值如果给出,则必须在0到6的范围内。值为0表示没有小数部分。如果省略,则默认精度为0。 输入示例DATETIME 1 2 3 4 5 6 7 CREATE TABLE IF NOT EXISTS `runoob_dataType_test`( `dataType_1` DATETIME, `dataType_2` DATETIME(0), `dataType_3` DATETIME(6), `dataType_4` DATETIME DEFAULT NULL, `dataType_5` DATETIME DEFAULT '2018-10-12 15:27:33.999999' ); 输出示例 1 2 3 4 5 6 7 8 9 10 11 CREATE TABLE IF NOT EXISTS "public"."runoob_datatype_test" ( "datatype_1" TIMESTAMP WITHOUT TIME ZONE, "datatype_2" TIMESTAMP(0) WITHOUT TIME ZONE, "datatype_3" TIMESTAMP(6) WITHOUT TIME ZONE, "datatype_4" TIMESTAMP WITHOUT TIME ZONE DEFAULT NULL, "datatype_5" TIMESTAMP WITHOUT TIME ZONE DEFAULT '2018-10-12 15:27:33.999999' ) WITH ( ORIENTATION = ROW, COMPRESSION = NO ) NOCOMPRESS DISTRIBUTE BY HASH ("datatype_1"); 输入示例TIME 1 2 3 4 5 6 7 8 9 10 11 CREATE TABLE IF NOT EXISTS `runoob_dataType_test`( `dataType_1` TIME DEFAULT '20:58:10', `dataType_2` TIME(3) DEFAULT '20:58:10', `dataType_3` TIME(6) DEFAULT '20:58:10', `dataType_4` TIME(6) DEFAULT '2018-10-11 20:00:00', `dataType_5` TIME(6) DEFAULT '20:58:10.01234', `dataType_6` TIME(6) DEFAULT '2018-10-11 20:00:00.01234', `dataType_7` TIME DEFAULT NULL, `dataType_8` TIME(6) DEFAULT NULL, PRIMARY KEY (dataType_1) ); 输出示例 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 CREATE TABLE IF NOT EXISTS "public"."runoob_datatype_test" ( "datatype_1" TIME WITHOUT TIME ZONE DEFAULT '20:58:10', "datatype_2" TIME(3) WITHOUT TIME ZONE DEFAULT '20:58:10', "datatype_3" TIME(6) WITHOUT TIME ZONE DEFAULT '20:58:10', "datatype_4" TIME(6) WITHOUT TIME ZONE DEFAULT '2018-10-11 20:00:00', "datatype_5" TIME(6) WITHOUT TIME ZONE DEFAULT '20:58:10.01234', "datatype_6" TIME(6) WITHOUT TIME ZONE DEFAULT '2018-10-11 20:00:00.01234', "datatype_7" TIME WITHOUT TIME ZONE DEFAULT NULL, "datatype_8" TIME(6) WITHOUT TIME ZONE DEFAULT NULL, PRIMARY KEY ("datatype_1") ) WITH ( ORIENTATION = ROW, COMPRESSION = NO ) NOCOMPRESS DISTRIBUTE BY HASH ("datatype_1"); 输入示例TIMESTAMP 1 2 3 4 5 6 7 8 9 CREATE TABLE IF NOT EXISTS `runoob_dataType_test`( `dataType_1` TIMESTAMP, `dateType_4` TIMESTAMP DEFAULT '2018-10-12 15:27:33', `dateType_5` TIMESTAMP DEFAULT '2018-10-12 15:27:33.999999', `dateType_6` TIMESTAMP DEFAULT '2018-10-12 15:27:33', `dateType_7` TIMESTAMP DEFAULT '2018-10-12 15:27:33', `dataType_8` TIMESTAMP(0) DEFAULT '2018-10-12 15:27:33', `dateType_9` TIMESTAMP(6) DEFAULT '2018-10-12 15:27:33' ); 输出示例 1 2 3 4 5 6 7 8 9 10 11 12 13 CREATE TABLE IF NOT EXISTS "public"."runoob_datatype_test" ( "datatype_1" TIMESTAMP WITH TIME ZONE, "datetype_4" TIMESTAMP WITH TIME ZONE DEFAULT '2018-10-12 15:27:33', "datetype_5" TIMESTAMP WITH TIME ZONE DEFAULT '2018-10-12 15:27:33.999999', "datetype_6" TIMESTAMP WITH TIME ZONE DEFAULT '2018-10-12 15:27:33', "datetype_7" TIMESTAMP WITH TIME ZONE DEFAULT '2018-10-12 15:27:33', "datatype_8" TIMESTAMP(0) WITH TIME ZONE DEFAULT '2018-10-12 15:27:33', "datetype_9" TIMESTAMP(6) WITH TIME ZONE DEFAULT '2018-10-12 15:27:33' ) WITH ( ORIENTATION = ROW, COMPRESSION = NO ) NOCOMPRESS DISTRIBUTE BY HASH ("datatype_1"); 输入示例YEAR 1 2 3 4 5 6 CREATE TABLE IF NOT EXISTS `runoob_dataType_test`( `dataType_1` YEAR, `dataType_2` YEAR(4), `dataType_3` YEAR DEFAULT '2018', `dataType_4` TIME DEFAULT NULL ); 输出示例 1 2 3 4 5 6 7 8 9 10 CREATE TABLE IF NOT EXISTS "public"."runoob_datatype_test" ( "datatype_1" SMALLINT, "datatype_2" SMALLINT, "datatype_3" VARCHAR(4) DEFAULT '2018', "datatype_4" TIME WITHOUT TIME ZONE DEFAULT NULL ) WITH ( ORIENTATION = ROW, COMPRESSION = NO ) NOCOMPRESS DISTRIBUTE BY HASH ("datatype_1");
  • ANALYZE 输入:CREATE TABLE,使用INDEX 1 2 CREATE TABLE EMP27 AS emp21 WITH DATA PRIMARY INDEX (EMPNO) ON COMMIT PRESERVE ROWS; 输出: Begin CREATE TABLE EMP27 ( LIKE emp21 INCLUDING ALL EXCLUDING PARTITION EXCLUDING RELOPTIONS EXCLUDING DISTRIBUTION ) DISTRIBUTE BY HASH ( EMPNO ) ; INSERT INTO EMP27 select * from emp21 ; end ; / ANALYZE Emp27 (EmpNo); 父主题: 表迁移
  • ALGORITHM MySQL扩展了对ALTER TABLE … ALGORITHM=INSTANT的支持:用户可以在表的任何位置即时添加列、即时删除列、添加列时评估行大小限制。 GaussDB(DWS)不支持此属性,并在迁移过程中被DSC删除。 输入示例 1 2 3 4 5 6 7 8 9 ALTER TABLE runoob_alter_test ALGORITHM=DEFAULT; ALTER TABLE runoob_alter_test ALGORITHM=INPLACE; ALTER TABLE runoob_alter_test ALGORITHM=COPY; ALTER TABLE runoob_alter_test ADD COLUMN COL_18 VARCHAR(64) DEFAULT '00', ALGORITHM=INSTANT; ALTER TABLE runoob_alter_test MODIFY COLUMN dataType7 BIGINT, ALGORITHM=COPY; ALTER TABLE `runoob_alter_test` ALGORITHM=DEFAULT, ALGORITHM=INPLACE, ALGORITHM=COPY; ALTER TABLE `runoob_alter_test` ADD COLUMN dataType11 INT, ALGORITHM=DEFAULT, ALGORITHM=INPLACE, ALGORITHM=COPY; ALTER TABLE runoob_alter_test CHANGE COLUMN dataType11 dataType12 SMALLINT ,ALGORITHM=INPLACE, ALGORITHM=COPY; ALTER TABLE runoob_alter_test ALGORITHM=INPLACE, ALGORITHM=COPY, DROP COLUMN dataType12; 输出示例 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ALTER TABLE "public"."runoob_alter_test" ADD COLUMN "col_18" VARCHAR(256) DEFAULT '00'; ALTER TABLE "public"."runoob_alter_test" MODIFY "datatype7" BIGINT NULL DEFAULT NULL; ALTER TABLE "public"."runoob_alter_test" ADD COLUMN "datatype11" INTEGER; ALTER TABLE "public"."runoob_alter_test" CHANGE COLUMN "datatype11" "datatype12" SMALLINT NULL DEFAULT NULL; ALTER TABLE "public"."runoob_alter_test" DROP COLUMN "datatype12" RESTRICT; DROP TABLE IF EXISTS "public"."runoob_alter_test"; 父主题: 表(可选参数、操作)
  • 以#开头的列名 输入 输出 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 REPLACE VIEW SC.VIEW_1 ( ,col_1 ,#_col_2 ,#_col_3 ) LOCKING TABLE sc.tab FOR AC CES S AS SEL Tgt.col1 ,Tgt.#_col_2 ,Tgt.#_col_3 FROM sc.tab TGT ; 1 2 3 4 5 6 7 8 9 10 11 12 13 14 CREATE OR REPLACE VIEW SC.VIEW_1 ( ,col_1 ,"#_COL_2" ,"#_COL_3" ) /*LOCKING TABLE sc.tab FOR ACCESS */ AS ( SELECT Tgt.col1 ,Tgt."#_COL_2" ,Tgt."#_COL_3" FROM sc.tab TGT ) ;
  • 类型转换时优先执行数据库操作 输入 输出 1 2 3 4 5 6 7 8 9 10 11 REPLACE VIEW SC.VIEW_1 ( col_1 ) LOCKING TABLE sc.tab FOR ACCESS AS SEL (COALESCE(TRIM(TGT.col_1),'')) || '_' || (COALESCE(TRIM(TGT.col_1),'')) (CHAR(22)) AS col_1 FROM sc.tab TGT ; 1 2 3 4 5 6 7 8 9 10 11 CREATE OR REPLACE VIEW SC.VIEW_1 (col_1) /*LOCKING TABLE sc.tab FOR ACCESS */ AS ( SELECT CAST( ( COALESCE( TRIM( TGT.col_1 ) ,'' ) ) || '_' || ( COALESCE( TRIM( TGT.col_1 ) ,'' ) ) AS CHAR( 22 ) ) AS col_1 FROM sc.tab TGT ) ;
  • 以YYYYMMDD格式输入的日期 输入 输出 1 2 3 SELECT 1 FROM tb_dt_fmtyyyymmdd WHERE JobName ='${JOB_NAME}' AND TXDATE = ${TX_DATE} - 19000000; SELECT 1 FROM tb_dt_fmtyyyymmdd WHERE JobName ='${JOB_NAME}' AND TXDATE = TO_DATE(${TX_DATE}, 'YYYYMMDD');
共100000条