华为云用户手册

  • PG_STATIO_ALL_INDEXES PG_STATIO_ALL_INDEXES视图显示当前数据库所有索引的I/O的统计信息。 表1 PG_STATIO_ALL_INDEXES字段 名称 类型 描述 relid oid 索引表的OID。 indexrelid oid 索引的OID。 schemaname name 索引中模式名。 relname name 索引的表名。 indexrelname name 索引名。 idx_blks_read bigint 从索引中读取的磁盘块数。 idx_blks_hit bigint 索引缓冲区命中数量。 父主题: 系统视图
  • 使用模板 在Data Studio中,用户可使用“模板”选项在SQL终端或PL/SQL查看器中插入常用SQL语句。Data Studio中已保存了一些常用SQL语句以便用户使用。您可以修改这些现有模板,或删除或创建模板。有关如何添加、删除和创建模板,请参见表1。 可用的默认模板如下: 名称 说明 df delete from is insert into o order by s* select from sc select row count sf select from sl select 执行以下步骤使用“模板”选项: 在SQL终端或PL/SQL查看器中输入模板名称。 按下“Ctrl+Alt+空格”。 页面显示已有的模板信息列表。列表可按照如下模式显示。 精确匹配 列表显示 是 显示与输入文本大小写相匹配的所有条目。 示例:在SQL终端或PL/SQL查看器中输入“SF”,会显示所有以“SF”开头的条目。 否 显示与输入文本相匹配的所有条目,不考虑文本大小写。 示例:在SQL终端或PL/SQL查看器中输入“SF”,会显示所有以“SF”、“Sf”、“sF”或“sf”开头的条目。 文本选择/光标定位 列表显示 选择文本并使用快捷键 显示与所选内容左侧字符到其左侧首个空格或换行符为止的内容匹配的条目。 未选择文本但使用快捷键 显示与光标位置到其左侧首个空格或换行符为止的内容匹配的条目。 在SQL终端或PL/SQL查看器中,如果不输入文本,直接按下快捷键“Ctrl+Alt+空格”,会显示“模板”中的所有条目。 在SQL终端或PL/SQL查看器中,如果输入的文本只有一个匹配项,则该项会直接替换输入的内容,而不显示模板列表。
  • 自动提交 您可在“首选项”窗口启用或禁用“自动提交”功能,具体参见表1。 若启用“自动提交”功能,“提交”和“回滚”会被禁用,事务将会被自动提交。 若禁用“自动提交”功能,“提交”和“回滚”会被启用,可手动提交或回滚事务。 对于OLAP,服务器会为所有SQL语句,如select,explain select,及set parameter,打开事务。 对于OLTP,服务器仅为DML语句,如INSERT, UPDATE, 及DELETE,打开事务。
  • 缩进/取消缩进行 缩进/取消缩进选项用于根据“首选项”页签中定义的缩进大小来移动行。 按照以下步骤在“PL/SQL Viewer”或“SQL终端”中缩进行: 选中目标行。 按下Tab键或单击。 根据“首选项”页签中定义的缩进大小来移动选中的行。可参见表1来修改缩进大小。 按照以下步骤在“PL/SQL Viewer”或“SQL终端”中取消缩进行: 选中目标行。 使用快捷键“Shift+Tab”或单击。 根据“首选项”页签中定义的缩进大小来移动选中的行。可参见表1来修改缩进大小。 如果选中了多行,则只对存在缩进的行取消缩进。例如,假设用户选择了多行,其中有一行从位置1开始。在这种场景下,使用“Shift+Tab”键将取消除该行以外所有行的缩进。
  • AUTO_INCREMENT 在数据库应用中,我们经常需要用到自动递增的唯一编号来标识记录。在MySQL中,可通过数据列的auto_increment属性来自动生成。可在建表时可用“auto_increment=n”选项来指定一个自增的初始值。可用“alter table table_name auto_increment=n”命令来重设自增的起始值。GaussDB(DWS)不支持该参数,DSC迁移时会将设置该属性的字段迁移为SERIAL类型,并删除该关键字,转换如下表。 表1 数据类型转换 MySQL数字类型 MySQL INPUT GaussDB(DWS) OUTPUT TINYINT TINYINT SMALLSERIAL SMALLINT SMALLINT UNSIGNED SMALLINT SERIAL SMALLSERIAL DOUBLE/FLOAT DOUBLE/FLOAT BIGSERIAL INT/INTEGER INT/INTEGER UNSIGNED INT/INTEGER BIGSERIAL SERIAL BIGINT/SERIAL BIGINT/SERIAL BIGSERIAL 输入示例 1 2 3 4 5 CREATE TABLE `public`.`job_instance` ( `job_sche_id` int(11) NOT NULL AUTO_INCREMENT, `task_name` varchar(100) NOT NULL DEFAULT '', PRIMARY KEY (`job_sche_id`) ) ENGINE=InnoDB AUTO_INCREMENT=219 DEFAULT CHARSET=utf8; 输出示例 1 2 3 4 5 6 7 8 9 CREATE TABLE "public"."job_instance" ( "job_sche_id" SERIAL NOT NULL, "task_name" VARCHAR(400) NOT NULL DEFAULT '', PRIMARY KEY ("job_sche_id") ) WITH ( ORIENTATION = ROW, COMPRESSION = NO ) NOCOMPRESS DISTRIBUTE BY HASH ("job_sche_id"); 此外,GaussDB(DWS)也不支持基于AUTO_INCREMENT属性修改表定义信息。DSC迁移时会将其移除。 输入示例 1 2 3 4 5 6 7 8 CREATE TABLE IF NOT EXISTS `public`.`runoob_alter_test`( `dataType1` int NOT NULL AUTO_INCREMENT, `dataType2` FLOAT(10,2), PRIMARY KEY(`dataType1`) ); ALTER TABLE runoob_alter_test AUTO_INCREMENT 100; ALTER TABLE runoob_alter_test AUTO_INCREMENT=100; 输出示例 1 2 3 4 5 6 7 8 9 CREATE TABLE IF NOT EXISTS "public"."runoob_alter_test" ( "datatype1" SERIAL NOT NULL, "datatype2" REAL, PRIMARY KEY ("datatype1") ) WITH ( ORIENTATION = ROW, COMPRESSION = NO ) NOCOMPRESS DISTRIBUTE BY HASH ("datatype1"); 父主题: 表(可选参数、操作)
  • 注释 MySQL支持由 '#' 或 '--' 字符引起的单行注释,而GaussDB(DWS)仅支持由双破折号 '--' 字符引起的单行注释。DSC工具迁移时会将 '#' 转化为 '--' 注释。 输入示例 1 2 3 4 5 6 7 ## comment sample create a table CREATE TABLE IF NOT EXISTS `public`.`runoob_tbl`( `runoob_id` VARCHAR, `runoob_title` VARCHAR(100) NOT NULL, `runoob_author` VARCHAR(40) NOT NULL, `submission_date` VARCHAR )ENGINE=InnoDB DEFAULT CHARSET=utf8; 输出示例 1 2 3 4 5 6 7 8 9 10 11 -- comment sample create a table CREATE TABLE IF NOT EXISTS "public"."runoob_tbl" ( "runoob_id" VARCHAR, "runoob_title" VARCHAR(400) NOT NULL, "runoob_author" VARCHAR(160) NOT NULL, "submission_date" VARCHAR ) WITH ( ORIENTATION = ROW, COMPRESSION = NO ) NOCOMPRESS DISTRIBUTE BY HASH ("runoob_id"); 父主题: 模式对象与数据定义(DDL)
  • ROWNUM 对于查询返回的每行数据,ROWNUM伪列段会返回一个数字,表示Oracle从一个表或一组连接的行中选择行的顺序。选择的第一行的ROWNUM为1,第二行为2,以此类推。 图3 输入:ROWNUM 图4 输出:ROWNUM 输入:ROWNUM,使用UPDATE 执行UPDATE时,如果使用了具有某个值(整数)的ROWNUM,系统将根据ROWNUM附近使用的运算符更新记录。 1 2 3 4 5 UPDATE SCMS_MSGPOOL_LST SET MSG_STD = '11' WHERE UNISEQNO = IN_OUNISEQNO AND MSG_TYP1 IN ('MT103', 'MT199') AND ROWNUM = 1; 输出 1 2 3 4 5 6 7 UPDATE SCMS_MSGPOOL_LST SET MSG_STD = '11' WHERE (xc_node_id,ctid) in (select xc_node_id, ctid from SCMS_MSGPOOL_LST where UNISEQNO = IN_OUNISEQNO AND MSG_TYP1 IN ('MT103', 'MT199') LIMIT 1) 输入:ROWNUM,使用DELETE 执行DELETE时,如果使用了具有某个值(整数)的ROWNUM,系统将根据ROWNUM附近的运算符依次删除记录。 1 2 delete from test1 where c1='abc' and rownum = 1; 输出 1 delete from test1 where (xc_node_id,ctid) in (select xc_node_id, ctid from test1 where c1='abc' limit 1); 输入:UPDATE,使用ROWNUM 使用ROWNUM迁移的UPDATE和DELETE脚本包含LIMIT,高斯不支持。 1 2 3 4 5 UPDATE SCMS_MSGPOOL_LST SET MSG_STD = '11' WHERE UNISEQNO = IN_OUNISEQNO AND MSG_TYP1 IN ('MT103', 'MT199') AND ROWNUM = 1; 输出 1 2 3 4 5 6 7 8 UPDATE SCMS_MSGPOOL_LST SET MSG_STD = '11' WHERE (xc_node_id, ctid) = ( SELECT xc_node_id, ctid FROM SCMS_MSGPOOL_LST WHERE UNISEQNO = IN_OUNISEQNO AND MSG_TYP1 IN ('MT103', 'MT199') LIMIT 1 ); 输入:DELETE,使用ROWNUM 1 2 3 4 5 DELETE FROM SPMS_APP_PUBLISH WHERE NOVA_NO = IN_NOVA_NO AND DELIVERY_TYPE = '1' AND PUBLISH_DATE = IN_PUBLISH_DATE AND ROWNUM = 1; 输出 1 2 3 4 5 6 7 8 DELETE FROM SPMS_APP_PUBLISH WHERE (xc_node_id, ctid) IN (SELECT xc_node_id, ctid FROM SPMS_APP_PUBLISH WHERE NOVA_NO = IN_NOVA_NO AND DELIVERY_TYPE = '1' AND PUBLISH_DATE = IN_PUBLISH_DATE LIMIT 1 );
  • Teradata SQL配置 设置Teradata配置参数可在迁移Teradata数据库脚本时自定义迁移工具的行为。 打开config文件夹中的features-teradata.properties文件,并根据实际需要设置表1中的参数。 表1 features-teradata.properties文件中的配置参数 参数 说明 取值范围 默认值 样例 deleteToTruncate 该参数用于设置不含WHERE的DELETE语句迁移规则。 若该参数设为true,则可将DELETE迁移为TRUNCATE。若该参数设为false,则不可将DELETE迁移为TRUNCATE。 true false false deleteToTruncate=true distributeByHash 基于主索引中指定的字段,将数据分布在集群多个节点上。 若该参数设为one,表示数据基于主索引的首个字段分布。 若该参数设为many,表示数据基于所有主索引字段分布。 该功能通过指定DISTRIBUTE BY子句实现。 说明: 该参数在V100R002C60版本中设置为one,因为该版本不支持在DISTRIBUTE BY子句中指定多个字段。 one many many distributeByHash =many extendedGroupByClause 该参数用于启用和禁用Group By(grouping sets/cube/rollup)迁移。 若该参数设为true,则可迁移GROUP BY()。 若该参数设为false,则不可迁移GROUP BY()。 true false false extendedGroupByClause=false inToExists 该参数可用于启用和禁用从IN/NOT IN到EXISTS/NOT EXISTS的查询优化。 true false false inToExists=false rowstoreToColumnstore 该参数将rowstore(行存)表转换为COLUMN(列存)表。 如果该参数设为true,则所有rowstore表脚本迁移时会转换为columnstore表。 true false false rowstoreToColumnstore=false session_mode 该参数用于在运行CREATE TABLE时设置默认表类型(SET/MULTISET)。 若该参数设为Teradata,则默认表类型会配置为SET。 若该参数设为ANSI,则默认表类型会配置为MULTISET。 Teradata ANSI Teradata session_mode=ANSI tdMigrateALIAS 该参数用于启用/禁用ALIAS迁移。 若该参数设为true,则迁移ALIAS。 若该参数设为false,则不迁移ALIAS。 true false false tdMigrateALIAS=true tdMigrateDOLLAR 该参数用于设置迁移工具行为,从而迁移名称以$(美元符号)开头的静态对象。该参数不适用于动态对象,这些对象的名称使用${}格式。 若该参数设为true,则使用英文双引号(")将以$开头的对象名称括起来。 若该参数设为false,则直接迁移以$开头的对象。 说明: 详情请参见以$开头的对象名称。 true false true tdMigrateDOLLAR=true tdMigrateLOCKoption 该参数是否迁移包含LOCK关键字的查询。 true表示在迁移此类查询时注释掉LOCK功能(LOCK到ACCESS)。 false表示不迁移此类查询。工具会跳过此查询,并记录以下消息: Gauss does not have equivalent syntax for LOCK option in CREATE VIEW and INSERT statement. Please enable the config_param tdMigrateLockOption to comment the LOCK syntax in the statement. 说明: 详情请参见ACCESS LOCK。 true false false tdMigrateLOCKoption=true tdMigrateNULLIFZERO 该参数指定是否迁移NULLIFZERO()。 若该参数设为true,则迁移NULLIFZERO()。 若该参数设为false,则不迁移NULLIFZERO()。 true false true tdMigrateNullIFZero=true tdMigrateVIEWCHECKOPTION 该参数指定是否迁移包含CHECK OPTION的视图。 若该参数设为true,则迁移时注释掉此类视图。 若该参数设为false,则不迁移此类视图。工具将按原样复制此查询并记录以下消息: Gauss does not support WITH CHECK OPTION in CREATE VIEW. Please enable the config_param tdMigrateViewCheckOption to comment the WITH CHECK OPTION syntax in the statement. true false false tdMigrateVIEWCHECKOPTION=true tdMigrateZEROIFNULL 该参数指定是否迁移ZEROIFNULL。 若该参数设为true,则迁移ZEROIFNULL()。 若该参数设为false,则不迁移ZEROIFNULL()。 true false true tdMigrateZEROIFNULL=true volatile 特定会话的volatile数据和表仅存储在该会话中。会话结束后,其数据和表会删除。 volatile表可以是表迁移表或unlogged表。 说明: V100R002C60仅支持unlogged表选项,不支持local temporary表。 local temporary unlogged local temporary volatile=unlogged tdMigrateCharsetCase 该参数指定是否迁移CHARACTER SET和CASESPECIFIC。 若该参数设为true,则迁移CHARACTER SET和CASESPECIFIC为注释掉的脚本。 若该参数设为false,则不迁移CHARACTER SET和CASESPECIFIC。工具按原样复制查询,并在错误日志文件中记录以下消息,包括查询细节(如文件名和语句位置): CHARACTER SET和CASESPECIFIC是列级选项,Gauss不提供等效语法。 用户可以改写相应语句,或将tdMigrateCharsetCase参数设为true,从而注释掉CHARACTER SET和CASESPECIFIC。 true false false tdMigrateCharsetCase=false 说明: 如果tdminatecharsetcase = true,则注释该字符的特殊关键字。 terdataUtilities 是否支持迁移Teradata命令行工具。 支持以下参数值: true false true false true terdataUtilities=true unique_primary_index_in_column_table 是否支持为列存表创建unique索引。 true false true unique_primary_index_in_column_table=true default_charset 是否支持迁移default_charset。 支持以下参数值: LATIN UNICODE GRAPHIC LATIN UNICODE GRAPHIC LATIN default_charset=LATIN mergeImplementation 指定merge类型: 使用WITH子句 拆分查询 支持以下参数值: With Split None With Split None None mergeImplementation=None dsqlSupport 是否支持dsql。 支持以下参数值: true false true false false dsqlSupport=false tdcolumnInSensitive 是否在迁移时删除包含双引号的列名称。 支持以下参数值: true false true false false tdcolumnInSensitive=false tdMigrateCASE_N 指定分区关键字CASE_N的迁移方式。Gauss不支持多级(嵌套)分区。 支持以下参数值: comment none comment none comment tdMigrateCASE_N=comment tdMigrateRANGE_N 指定分区关键字RANGE_N的迁移方式。Gauss不支持多级(嵌套)分区。 支持以下参数值: comment none range comment none range range tdMigrateRANGE_N=range tdMigrateAddMonth 是否支持迁移addMonth。 支持以下参数值: true false 若该参数设为true,则迁移后为mig_td_ext.ADD_MONTHS(添加mig_td_ext)。否则,不支持迁移。 true false false tdMigrateAddMonth=false 父主题: 配置DSC
  • 注意事项 用户监控可以同时监控快慢车道(快车道管控简单作业,慢车道管控复杂作业)所有作业的CPU、IO和内存使用情况,不再受限于仅监控慢车道作业。 当前快车道作业内存和CPU不受控,在快车道运行作业占用资源较多情况下,可能出现已用资源大于资源限制的情况。 DN监控视图中,IO、内存和CPU显示的是本DN上资源池资源使用和资源限制信息。 CN监控视图中,IO、内存和CPU显示的是集群内所有DN资源池资源使用和资源限制的累积和。 DN每隔5s更新一次监控信息,CN每隔5s从DN收集一次用户监控信息,因为各实例单独更新/收集用户监控信息,因此各实例监控信息更新时间可能不一致。 辅助线程中每隔30s自动调用持久化函数,持久化用户监控数据,正常情况下不需要用户单独调用持久化函数持久化用户监控数据。 当用户数量较多,集群规模较大时,查询此类实时视图,因CN/DN间实时通信开销,会有一定的网络延时。 初始管理用户不进行资源监控。
  • 操作步骤 查询所有用户的资源限额和资源实时使用情况。 1 SELECT * FROM PG_TOTAL_USER_RESOURCE_INFO; 得到的结果视图如下: username | used_memory | total_memory | used_cpu | total_cpu | used_space | total_space | used_temp_space | total_temp_space | used_spill_space | total_spill_space | read_kbytes | write_kbytes | read_counts | write_counts | read_speed | write_speed | send_speed | recv_speed -----------------------+-------------+--------------+----------+-----------+------------+-------------+-----------------+------------------+------------------+-------------------+-------------+--------------+-------------+--------------+------------+-------------+------------+------------ perfadm | 0 | 0 | 0 | 0 | 0 | -1 | 0 | -1 | 0 | -1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 usern | 0 | 17250 | 0 | 48 | 0 | -1 | 0 | -1 | 0 | -1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 (2 rows) 其中,IO资源监控字段(read_kbytes、write_kbytes、read_counts、write_counts、read_speed和write_speed)需要在GUC参数enable_user_metric_persistent开启时才有监控数据。 所查各字段说明详见PG_TOTAL_USER_RESOURCE_INFO 。 查询具体某个用户的资源限额和资源实时使用情况。 1 SELECT * FROM GS_WLM_USER_RESOURCE_INFO('username'); 查询结果如下: userid | used_memory | total_memory | used_cpu | total_cpu | used_space | total_space | used_temp_space | total_temp_space | used_spill_space | total_spill_space | read_kbytes | write_kbytes | read_counts | write_counts | read_speed | write_speed | send_speed | recv_speed --------+-------------+--------------+----------+-----------+------------+-------------+-----------------+------------------+------------------+-------------------+-------------+--------------+-------------+--------------+------------+-------------+------------+------------ 16407 | 18 | 1655 | 6 | 19 | 13787176 | -1 | 0 | -1 | 0 | -1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 (1 row) 查询所有用户的资源限额和资源历史使用情况。 1 SELECT * FROM GS_WLM_USER_RESOURCE_HISTORY; 查询结果如下: username | timestamp | used_memory | total_memory | used_cpu | total_cpu | used_space | total_space | used_temp_space | total_temp_space | used_spill_space | total_spill_space | read_kbytes | write_kbytes | read_counts | write_counts | read_speed | write_speed | send_speed | recv_speed -----------------------+-------------------------------+-------------+--------------+----------+-----------+------------+-------------+-----------------+------------------+------------------+-------------------+-------------+--------------+-------------+--------------+-------------+-------------+------------+------------ usern | 2020-01-08 22:56:06.456855+08 | 0 | 17250 | 0 | 48 | 0 | -1 | 0 | -1 | 88349078 | -1 | 45680 | 34 | 5710 | 8 | 320 | 0 | 0 | 0 userg | 2020-01-08 22:56:06.458659+08 | 0 | 15525 | 33.48 | 48 | 0 | -1 | 0 | -1 | 110169581 | -1 | 17648 | 23 | 2206 | 5 | 123 | 0 | 0 | 0 userg1 | 2020-01-08 22:56:06.460252+08 | 0 | 13972 | 33.48 | 48 | 0 | -1 | 0 | -1 | 136106277 | -1 | 17648 | 23 | 2206 | 5 | 123 | 0 | 0 | 0 对于系统表GS_WLM_USER_RESOURCE_HISTORY,仅当GUC参数enable_user_metric_persistent开启时,才会定期将视图PG_TOTAL_USER_RESOURCE_INFO中的数据保存到历史表中。 所查各字段说明详见GS_WLM_USER_RESOURCE_HISTORY。
  • COLLATE 在MySQL中,COLLATE表示默认的数据库排序规则。GaussDB(DWS)不支持该属性修改表定义信息,DSC迁移时会将该关键字删除。 输入示例 1 2 3 4 5 6 7 8 CREATE TABLE `public`.`runoob_tbl_test`( `runoob_id` VARCHAR(30), `runoob_title` VARCHAR(100) NOT NULL, `runoob_author` VARCHAR(40) NOT NULL, `submission_date` VARCHAR(30) ) COLLATE=utf8_general_ci; ALTER TABLE `public`.`runoob_tbl_test` COLLATE=utf8mb4_bin; 输出示例 1 2 3 4 5 6 7 8 9 10 CREATE TABLE "public"."runoob_tbl_test" ( "runoob_id" VARCHAR(120), "runoob_title" VARCHAR(400) NOT NULL, "runoob_author" VARCHAR(160) NOT NULL, "submission_date" VARCHAR(120) ) WITH ( ORIENTATION = ROW, COMPRESSION = NO ) NOCOMPRESS DISTRIBUTE BY HASH ("runoob_id"); 父主题: 表(可选参数、操作)
  • 导出当前页的查询结果 如要导出查询结果,建议导出所有查询结果,而非当前页的查询结果。“导出当前页到CSV”功能已弃用。 执行以下步骤导出当前页查询结果。 选择“结果”页签。 单击图标,导出当前页的查询结果。 显示“Data Studio安全免责声明”对话框。 选择“确定”。 选择保存当前页的路径。 可在状态栏查询导出页的状态。 单击“保存”。显示“数据导出成功”对话框。 单击“确定”。Data Studio在“消息”选项卡显示操作状态。 如果在导出结果时磁盘已满,则Data Studio会在“消息”选项卡中报错。清理磁盘,重新建立连接并导出结果数据。
  • 导出所有查询结果 在执行导出操作过程中,以下操作无法启动: 在“SQL终端”页签,执行SQL查询。 执行 PL/SQL语句。 调试 PL/SQL语句。 导出所有查询结果。 选择“结果”页签。 单击 ,显示“导出结果集数据”窗口。 请参见导出表数据完成导出操作。 可在状态栏查看结果的导出状态。 Data Studio显示“数据导出成功”对话框。 单击“确定”。“消息”页签显示已完成操作的状态。 如果在导出结果时磁盘已满,则Data Studio会在“消息”选项卡中报错。请清理磁盘,重新建立连接并导出结果数据。 “消息”页签显示“执行时间”、“导出的总行数”和CSV文件的保存路径。
  • HIGH_PRIORITY MySQL中如果指定HIGH_PRIORITY,则会覆盖LOW_PRIORITY选项的效果。 输入示例 1 2 3 4 5 6 7 8 9 # HIGH_PRIORITY 高优先级 INSERT HIGH_PRIORITY INTO exmp_tb2 VALUES(100, 12.3, 'cheap', '2018-11-11'); INSERT HIGH_PRIORITY INTO exmp_tb2 VALUES(DEFAULT, 128.23, 'nice', '2018-10-11'); INSERT HIGH_PRIORITY INTO exmp_tb2 VALUES(DEFAULT, DEFAULT, 'nice', '2018-12-14'); INSERT HIGH_PRIORITY INTO exmp_tb2 VALUES(DEFAULT, DEFAULT, 'nice', DEFAULT); INSERT HIGH_PRIORITY INTO exmp_tb2 (tb2_id, tb2_price) VALUES(DEFAULT, DEFAULT); INSERT HIGH_PRIORITY INTO exmp_tb2 (tb2_id, tb2_price, tb2_note) VALUES(DEFAULT, DEFAULT, DEFAULT); INSERT HIGH_PRIORITY INTO exmp_tb2 (tb2_id, tb2_price , tb2_note) VALUES(DEFAULT, DEFAULT, DEFAULT); INSERT HIGH_PRIORITY INTO exmp_tb2 (tb2_id, tb2_price, tb2_note, tb2_date) VALUES(DEFAULT, DEFAULT, DEFAULT, DEFAULT); 输出示例 1 2 3 4 5 6 7 8 9 -- HIGH_PRIORITY 高优先级 INSERT INTO "public"."exmp_tb2" VALUES (100,12.3,'cheap','2018-11-11'); 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 INTO "public"."exmp_tb2" ("tb2_id","tb2_price","tb2_note") VALUES (DEFAULT,DEFAULT,DEFAULT); INSERT INTO "public"."exmp_tb2" ("tb2_id","tb2_price","tb2_note","tb2_date") VALUES (DEFAULT,DEFAULT,DEFAULT,DEFAULT); 父主题: INSERT
  • KEY_BLOCK_SIZE KEY_BLOCK_SIZE的选择与存储引擎有关。对于MyISAM表,KEY_BLOCK_SIZE可选地指定用于索引键块的字节大小。对于InnoDB表,KEY_BLOCK_SIZE指定用于压缩的InnoDB表的页面大小(以KB为单位)。GaussDB(DWS)不支持该属性,DSC迁移时会将属性删除。 输入示例 1 2 3 4 5 6 7 8 9 CREATE TABLE `public`.`runoob_tbl_test`( `runoob_id` VARCHAR(30), `runoob_title` VARCHAR(100) NOT NULL, `runoob_author` VARCHAR(40) NOT NULL, `submission_date` VARCHAR(30) ) ENGINE=MyISAM KEY_BLOCK_SIZE=8; ALTER TABLE runoob_tbl_test ENGINE=InnoDB; ALTER TABLE runoob_tbl_test KEY_BLOCK_SIZE=0; 输出示例 1 2 3 4 5 6 7 8 9 10 CREATE TABLE "public"."runoob_tbl_test" ( "runoob_id" VARCHAR(120), "runoob_title" VARCHAR(400) NOT NULL, "runoob_author" VARCHAR(160) NOT NULL, "submission_date" VARCHAR(120) ) WITH ( ORIENTATION = ROW, COMPRESSION = NO ) NOCOMPRESS DISTRIBUTE BY HASH ("runoob_id"); 父主题: 表(可选参数、操作)
  • PARTITION MySQL REPLACE支持使用PARTITION关键字和分区,子分区或两者的逗号分隔名称列表显式分区选择。 输入 1 2 3 4 5 replace INTO employees PARTITION(p3) VALUES (19, 'Frank1', 'Williams', 1, 2); replace INTO employees PARTITION(p0) VALUES (4, 'Frank1', 'Williams', 1, 2); replace INTO employees PARTITION(p1) VALUES (9, 'Frank1', 'Williams', 1, 2); replace INTO employees PARTITION(p2) VALUES (10, 'Frank1', 'Williams', 1, 2); replace INTO employees PARTITION(p2) VALUES (11, 'Frank1', 'Williams', 1, 2); 输出 1 2 3 4 5 INSERT INTO "public"."employees" VALUES (19,'Frank1','Williams',1,2); INSERT INTO "public"."employees" VALUES (4,'Frank1','Williams',1,2); INSERT INTO "public"."employees" VALUES (9,'Frank1','Williams',1,2); INSERT INTO "public"."employees" VALUES (10,'Frank1','Williams',1,2); INSERT INTO "public"."employees" VALUES (11,'Frank1','Williams',1,2); 父主题: REPLACE
  • 表达式 将SELECT结果赋值为变量。 Netezza语法 迁移后语法 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 CREATE OR REPLACE PROCEDURE sp_sel_res_to_var ( NATIONAL CHARACTER VARYING(10) ) RETURNS CHARACTER VARYING(ANY) LANGUAGE NZPLSQL AS BEGIN_PROC DECLARE counts INTEGER := 0 ; I_LOAD_DT ALIAS FOR $1 ; BEGIN COUNTS := SELECT COUNT( * ) FROM tb_sel_res_to_var WHERE ETLDATE = I_LOAD_DT; EXECUTE IMMEDIATE 'insert into TABLES_COUNTS values( ''tb_sel_res_to_var'', ''' || I_LOAD_DT || ''', ' || COUNTS || ')' ; RETURN '0' ; END; END_PROC; 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 CREATE OR REPLACE FUNCTION sp_sel_res_to_var ( NATIONAL CHARACTER VARYING(10) ) RETURN CHARACTER VARYING AS counts INTEGER := 0 ; I_LOAD_DT ALIAS FOR $1 ; BEGIN SELECT COUNT(*) INTO COUNTS FROM tb_sel_res_to_var WHERE ETLDATE = I_LOAD_DT; EXECUTE IMMEDIATE 'insert into TABLES_COUNTS values( ''tb_sel_res_to_var'', ''' || I_LOAD_DT || ''', ' || COUNTS || ')' ; RETURN '0' ; END; /
  • EXECUTE AS CALLER 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 25 26 27 CREATE OR REPLACE PROCEDURE sp_ntz_exec_as_caller ( CHARACTER VARYING(512) ) RETURNS INTEGER LANGUAGE NZPLSQL EXECUTE AS CALLER AS BEGIN_PROC DECLARE SQL ALIAS FOR $1; BEGIN EXECUTE IMMEDIATE SQL; RETURN 0; END; END_PROC; ------------------------ CREATE or replace PROCEDURE sp_ntz_exec_as_owner ( CHARACTER VARYING(512) ) RETURNS INTEGER LANGUAGE NZPLSQL EXECUTE AS OWNER AS BEGIN_PROC DECLARE SQL ALIAS FOR $1; BEGIN EXECUTE IMMEDIATE SQL; RETURN 0; 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 23 CREATE OR REPLACE FUNCTION sp_ntz_exec_as_caller ( CHARACTER VARYING(512) ) RETURN INTEGER SECURITY INVOKER AS SQL ALIAS FOR $1; BEGIN EXECUTE IMMEDIATE SQL; RETURN 0; END; / ------------------------ CREATE OR REPLACE FUNCTION sp_ntz_exec_as_owner ( CHARACTER VARYING(512) ) RETURN INTEGER SECURITY DEFINER AS SQL ALIAS FOR $1; BEGIN EXECUTE IMMEDIATE SQL; RETURN 0; END; /
  • LOOP Netezza语法 迁移后语法 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 CREATE OR REPLACE PROCEDURE sp_ntz_for_loop_with_more_dots ( INTEGER ) RETURNS CHARACTER VARYING(ANY) LANGUAGE NZPLSQL AS BEGIN_PROC DECLARE p_abc INTEGER; p_bcd INTEGER; p_var1 ALIAS FOR $1; BEGIN p_bcd := ISNULL(p_var1, 10); RAISE NOTICE 'p_bcd=%', p_bcd; FOR p_abc IN 0...(p_bcd) LOOP RAISE NOTICE 'hello world %', p_abc; END LOOP; END; END_PROC; 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 CREATE OR REPLACE FUNCTION sp_ntz_for_loop_with_more_dots ( INTEGER ) RETURN CHARACTER VARYING AS p_abc INTEGER ; p_bcd INTEGER; p_var1 ALIAS FOR $1; BEGIN p_bcd := NVL(p_var1, 10); RAISE NOTICE 'p_bcd=%', p_bcd; FOR p_abc IN 0..(p_bcd) LOOP RAISE NOTICE 'hello world %', p_abc; END LOOP; END; /
  • 高斯关键词 CURSOR Netezza语法 迁移后语法 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 CREATE OR REPLACE PROCEDURE sp_ntz_keyword_cursor() RETURNS INTEGER LANGUAGE NZPLSQL AS BEGIN_PROC DECLARE tablename NVARCHAR(100); cursor RECORD; BEGIN FOR cursor IN SELECT t.TABLENAME FROM _V_TABLE t WHERE TABLENAME LIKE 'T_ODS_CRM%' LOOP tablename := cursor.TABLENAME; END LOOP; END; END_PROC; 1 2 3 4 5 6 7 8 9 10 11 12 13 CREATE OR REPLACE FUNCTION sp_ntz_keyword_cursor() RETURN INTEGER AS tablename NCHAR VARYING(100); mig_cursor RECORD; BEGIN FOR mig_cursor IN (SELECT t.TABLENAME FROM _V_TABLE t WHERE TABLENAME LIKE 'T_ODS_CRM%') LOOP tablename := mig_cursor.TABLENAME; END LOOP; END; /
  • 数据类型 NATIONAL CHARACTER VARYING ( ANY ) Netezza语法 迁移后语法 1 2 3 4 5 6 7 8 9 10 11 12 13 14 CREATE OR REPLACE PROCEDURE sp_ntz_nchar_with_any ( NATIONAL CHARACTER VARYING(10) , NATIONAL CHARACTER VARYING(ANY) ) RETURN NATIONAL CHARACTER VARYING(ANY) LANGUAGE NZPLSQL AS BEGIN_PROC DECLARE I_LOAD_DT ALIAS FOR $1 ; -- ETL Date V_TASK_ID ALIAS FOR $2 ; BEGIN RETURN I_LOAD_DT || ',' || V_TASK_ID; END; END_PROC; 1 2 3 4 5 6 7 8 9 10 11 12 CREATE OR REPLACE FUNCTION sp_ntz_nchar_with_any ( NATIONAL CHARACTER VARYING(10) , NATIONAL CHARACTER VARYING ) RETURN NATIONAL CHARACTER VARYING AS I_LOAD_DT ALIAS FOR $1 ; /* ETL Date */ V_TASK_ID ALIAS FOR $2 ; BEGIN RETURN I_LOAD_DT || ',' || V_TASK_ID; END; /
  • 意外 TRANSACTION_ABORTED 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 25 26 27 28 29 30 31 32 33 CREATE OR REPLACE PROCEDURE sp_ntz_transaction_aborted ( NUMERIC(ANY) , NUMERIC(ANY) ) RETURNS NATIONAL CHARACTER VARYING(ANY) LANGUAGE NZPLSQL AS BEGIN_PROC DECLARE ERROR_INFO NVARCHAR(2000) := ''; p_l_begindate ALIAS FOR $1; p_l_enddate ALIAS FOR $2; BEGIN ERROR_INFO := CRHSP_CRH_ETL_EXCHDATE(p_l_begindate,p_l_enddate); RETURN ERROR_INFO; EXCEPTION WHEN TRANSACTION_ABORTED THEN ROLLBACK; BEGIN ERROR_INFO := SQLERRM||' sp_o_transaction_aborted:'; RETURN ERROR_INFO; END; WHEN OTHERS THEN BEGIN ERROR_INFO := SQLERRM||' sp_o_transaction_aborted:'; RETURN ERROR_INFO; END; 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 23 24 25 26 27 28 29 30 31 CREATE OR REPLACE FUNCTION sp_ntz_transaction_aborted ( NUMERIC , NUMERIC ) RETURN NATIONAL CHARACTER VARYING AS ERROR_INFO NCHAR VARYING(2000) := ''; p_l_begindate ALIAS FOR $1; p_l_enddate ALIAS FOR $2; BEGIN ERROR_INFO := CRHSP_CRH_ETL_EXCHDATE(p_l_begindate,p_l_enddate); RETURN ERROR_INFO; EXCEPTION WHEN INVALID_TRANSACTION_TERMINATION THEN ROLLBACK; BEGIN ERROR_INFO := SQLERRM||' sp_o_transaction_aborted:'; RETURN ERROR_INFO; END; WHEN OTHERS THEN BEGIN ERROR_INFO := SQLERRM||' sp_o_transaction_aborted:'; RETURN ERROR_INFO; END; 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))
  • 变量类型 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; /
  • 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) ;
  • 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 ;
  • 数据库 在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频率的错误信息。 父主题: 系统视图
共100000条