华为云用户手册

  • 命令格式 gs_restore [OPTION]... FILE FILE没有短选项或长选项。用来指定归档文件所处的位置。 作为前提条件,需输入dbname或-l选项。不允许用户同时输入dbname和-l选项。 gs_restore默认是以追加的方式进行数据导入。为避免多次导入造成数据异常,在进行导入时,建议使用"-e"和"-c" 参数,即导入前删除已存在于待导入数据库中的数据库对象,同时当出现导入错误时,忽略当前错误,继续执行导入任务,并在导入后会显示相应的错误信息。
  • 配置自定义数据库脚本 用户可以使用自定义数据库的SQL脚本从Teradata迁移那些不直接存在于目标数据库的关键字。 迁移之前,这些脚本必须在每个目标数据库中执行一次。 打开发布包中的scripts文件夹,文件目录如表2所示。 SQL文件包含自定义迁移函数。 GaussDB (DWS)数据库需要通过这些函数支持Teradata的具体特性。 表2 DSC自定义数据库脚本 文件夹 脚本文件 描述 -- scripts - 文件夹:所有脚本 ------ teradata - 文件夹:Teradata函数和脚本 -------- view - 文件夹:配置视图的脚本 - vw_td_dbc_tables.sql 脚本:启动Teradata中DBC.TABLES的迁移 - vw_td_dbc_indices.sql 脚本:启动Teradata中DBC.INDI CES 的迁移 -------- function - 文件夹:配置Teradata系统函数的脚本 -X mig_fn_get_datatype_short_name.sql 脚本:启动Teradata中DBC.COLUMNS的迁移 - mig_fn_castasint.sql 脚本:启动CAST AS INTEGER的迁移 --------db_scripts - 文件夹:启动Teradata自定义函数的脚本 - mig_fn_get_datatype_short_name.sql 脚本:启动Teradata中DBC.COLUMNS的迁移 --------core - 文件夹:Teradata关键脚本 - teradatacore.pm 脚本:执行Perl迁移的脚本
  • 配置DSC和迁移属性 DSC配置涉及DSC/config目录中的配置文件,请根据表3配置对应的参数。 表3 DSC配置参数 迁移场景 配置文件 配置参数 Teradata SQL迁移 DSC:application.properties Teradata SQL配置:features-teradata.properties 1 2 3 4 5 6 7 8 9 10 11 deleteToTruncate=True/False distributeByHash=one/many extendedGroupByClause=True/False inToExists=True/False rowstoreToColumnstore=True/False session_mode=Teradata/ANSI tdMigrateDollar=True/False tdMigrateALIAS=True/False tdMigrateNULLIFZero=True/False tdMigrateZEROIFNULL=True/False volatile=local temporary/unlogged Teradata Perl迁移 DSC:application.properties Teradata Perl配置:perl-migration.properties 1 2 3 4 5 6 7 8 add-timing-on=True/False db-bteq-tag-name=bteq db-tdsql-tag-name=sql_lang logging-level=error/warning/info migrate-variables=True/False remove-intermediate-files=True/False target_files=overwrite/cancel migrate-executequery=True/False MySQL SQL迁移 DSC:application.properties MySQL配置:features-mysql.properties 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 table.databaseAsSchema=true table.defaultSchema=public table.schema= table.orientation=ROW table.type=HASH table.partition-key.choose.strategy=partitionKeyChooserStrategy table.partition-key.name= table.compress.mode=NOCOMPRESS table.compress.level=0 table.compress.row=NO table.compress.column=LOW table.database.template=template0 table.index.rename=false table.database.onlyFullGroupBy=true table.database.realAsFloat=false
  • 执行自定义数据库脚本 执行数据库自定义脚本是为了支持目标数据库某些版本中不存在的关键字。这些脚本在迁移之前需在目标数据库中执行一次。 DSC/scripts目录中的自定义脚本如表1所示。有关如何执行自定义脚本的详细信息,请参见配置自定义数据库脚本。 表1 自定义数据库脚本 自定义脚本 说明 mig_fn_get_datatype_short_name.sql Teradata函数的自定义数据库脚本 mig_fn_castasint.sql 用于迁移CAST AS INTEGER的自定义数据库脚本 vw_td_dbc_tables.sql 用于迁移DBC.TABLES的自定义数据库脚本 vw_td_dbc_indices.sql 用于迁移DBC.INDICES的自定义数据库脚本
  • PG_RANGE PG_RANGE系统表存储关于范围类型的信息。 除了PG_TYPE里类型的记录。 表1 PG_RANGE字段 名字 类型 引用 描述 rngtypid oid PG_TYPE.oid 范围类型的OID。 rngsubtype oid PG_TYPE.oid 该范围类型的元素类型(子类型)的OID。 rngcollation oid PG_COLLATION.oid 用于范围比较的排序规则的OID,如果没有则为0。 rngsubopc oid PG_OPCLASS.oid 用于范围比较的子类型的操作符类的OID。 rngcanonical regproc PG_PROC.oid 转换范围类型为规范格式的函数的OID,如果没有则为0。 rngsubdiff regproc PG_PROC.oid 返回两个double precision元素值的不同的函数的OID,如果没有则为0。 rngsubopc(如果元素类型是可排序的,则加上rngcollation)决定用于范围类型的排序顺序。当元素类型是时使用rngcanonical用于离散类型的元素类型。 父主题: 系统表
  • 下载并安装Data Studio客户端 GaussDB(DWS) 提供了基于Windows平台的Data Studio图形界面客户端,该工具依赖JDK,请先在客户端主机上安装JDK。 仅支持Java 1.8版本的JDK。 在Windows操作系统中,您可以访问JDK官网网站,下载符合操作系统版本的JDK,并根据指导进行安装。 登录GaussDB(DWS)管理控制台。在左侧导航栏中,单击“连接客户端”,进入“下载客户端和驱动”页面。 在“下载客户端和驱动”页面,下载“Data Studio图形界面客户端”。 请根据操作系统类型,选择“Windows x86”或“Windows x64”,再单击“下载”,可以下载与现有集群版本匹配的Data Studio工具。 单击“历史版本”可根据集群版本下载相应版本的Data Studio工具,建议按集群版本下载配套的工具。 图1 下载客户端 如果同时拥有不同版本的集群,选择与集群版本相对应的gsql版本客户端。在“集群管理”页面的集群列表中,单击指定集群的名称,再选择“集群详情”页签,可查看集群版本。 解压下载的客户端软件包(32位或64位)到需要安装的路径。 打开安装目录,双击Data Studio.exe,启动Data Studio客户端。 图2 启动客户端 表1 Data Studio安装包结构 文件夹/文件 说明 configuration 包含应用启动信息和所需Eclipse插件路径信息。 db_assistant 包含“SQL助手”功能相关的文件。 docs 包含《Data Studio用户手册.pdf》,本手册详细介绍了如何使用Data Studio工具。 包含在Data Studio中使用的开源软件的版权声明、许可证和书面邀约。 features 包含Eclipse(如富客户端协议GUI)和Data Studio特性。 p2 p2包含的文件用于提供和管理基于Eclipse和Equinox的应用。 plugins 包含必须的Eclipse和Data Studio插件。 tools 包含Data Studio的依赖工具。 UserData/ Autosave Logs/ Preferences/ Profile/ History/ Security/ 包含每个使用Data Studio的OS用户各自的文件夹。 Autosave:包含自动保存的查询和函数/过程信息。 Logs:包含Data Studio.log文件,该文件保存Data Studio所有操作的日志信息。 Preferences:包含Preferences.prefs文件,内容为自定义的首选项。 Profile:包含connection.properties文件、SQL执行历史、Profiles.txt文件,用于管理Data Studio中的连接信息。 Security:包含Data Studio安全管理所需文件。 说明: User Data文件夹在首个用户用Data Studio打开实例后创建。 日志文件夹、语言、内存设置、日志级别对所有用户生效。 Data Studio启动后,会创建日志文件夹、Data Studio.log文件、Preferences文件夹、Preferences.prefs文件、Profile文件夹、connection.properties文件、Profiles.txt文件和security文件夹。 如果Data Studio.ini文件中指定了日志文件夹路径,日志会在指定路径创建。 如果您因安全密钥被损坏,无法登录Data Studio,请按如下步骤生成新的安全密钥: 1. 从Data Studio文件夹下的UserData文件夹中删除security文件夹。 2. 重启Data Studio。 artifacts.xml 包含产品编译版本信息。 changelog.txt 包含当前版本的详细变更信息。 Data Studio.exe/DataStudio.sh 支持连接服务器并执行各种操作,如管理数据库对象、编辑或执行PL/SQL程序。 Data Studio.ini 包含Data Studio工具运行时的配置信息。 readme.txt 包含当前版本的功能和修复的问题。 若您的电脑阻止应用运行,可对Data Studio.exe文件属性勾选解除锁定即可启动。 安装完成后双击安装目录/tools的中StartDataStudio.bat文件检查操作系统、 Java和Data Studio的版本。 批量文件检查版本兼容性并打开Data Studio,或根据安装的操作系统、Java和Data Studio版本,显示相应的信息。 如果安装的Java版本低于1.8,可能会弹出错误消息。 批量文件检查如下场景,用于确认Data Studio的操作系统和Java版本: DS安装(32/64位) 操作系统(位) Java(位) 结果 32 32 32 打开Data Studio 32 64 32 打开Data Studio 32 64 64 弹出错误消息 64 32 32 弹出错误消息 64 64 32 弹出错误消息 64 64 64 打开Data Studio 父主题: Data Studio
  • PARTITION BY LIST 输入示例 1 2 3 4 5 6 7 8 9 10 11 12 13 14 CREATE TABLE IF NOT EXISTS `runoob_tbl_part_test`( `runoob_id` INT NOT NULL, `runoob_title` VARCHAR(100) NOT NULL, `runoob_author` VARCHAR(40) NOT NULL, `submission_date` VARCHAR(30), PRIMARY KEY (`runoob_id`) )ENGINE=InnoDB DEFAULT CHARSET=utf8 PARTITION BY LIST (runoob_id)( PARTITION r0 VALUES IN (1, 5, 9, 13, 17, 21), PARTITION r1 VALUES IN (2, 6, 10, 14, 18, 22), PARTITION r2 VALUES IN (3, 7, 11, 15, 19, 23), PARTITION r3 VALUES IN (4, 8, 12, 16, 20, 24) ); ALTER TABLE `runoob_tbl_part_test` ADD PARTITION (PARTITION p5 VALUES IN(30, 40, 50, 60, 70, 80)); 输出示例 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 CREATE TABLE IF NOT EXISTS "public"."runoob_tbl_part_test" ( "runoob_id" INTEGER NOT NULL, "runoob_title" VARCHAR(400) NOT NULL, "runoob_author" VARCHAR(160) NOT NULL, "submission_date" VARCHAR(120), PRIMARY KEY ("runoob_id") ) WITH (ORIENTATION = ROW, COMPRESSION = NO) NOCOMPRESS DISTRIBUTE BY HASH ("runoob_id") PARTITION BY LIST (runoob_id) ( PARTITION r0 VALUES (1, 5, 9, 13, 17, 21), PARTITION r1 VALUES (2, 6, 10, 14, 18, 22), PARTITION r2 VALUES (3, 7, 11, 15, 19, 23), PARTITION r3 VALUES (4, 8, 12, 16, 20, 24) ); ALTER TABLE "public"."runoob_tbl_part_test" ADD PARTITION p5 VALUES (30, 40, 50, 60, 70, 80);
  • GS_BLOCKLIST_QUERY GS_BLOCKLIST_QUERY视图用于查询作业黑名单信息和异常信息,此视图是由系统表GS_BLOCKLIST_QUERY和GS_WLM_SESSION_INFO关联所得,同时对查询结果进行了去重筛选,因此在GS_WLM_SESSION_INFO表较大的情况下,查询可能需要消耗较长时间。 表1 GS_BLOCKLIST_QUERY视图字段 名字 类型 引用 描述 unique_sql_id bigint - 基于查询解析树生成的查询唯一ID。 block_list boolean - 查询作业是否属于黑名单。 except_num integer - 查询作业异常次数。 except_time timestamp - 查询作业最近一次异常时间。 query text - 执行的查询语句。 此视图仅限在gaussdb数据库中查询,其它数据库中查询会直接报错。 通常对于DML语句,在计算Unique SQL ID的过程中会忽略常量值。但对于DDL、DCL以及设置参数等语句,常量值不可以忽略。因此一个unique_sql_id可能会对应一个或多个查询。 父主题: 系统视图
  • PARTITION BY RANGE 输入示例 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 CREATE TABLE IF NOT EXISTS `runoob_tbl_part_test`( `runoob_id` INT NOT NULL, `runoob_title` VARCHAR(100) NOT NULL, `runoob_author` VARCHAR(40) NOT NULL, `submission_date` VARCHAR(30) )ENGINE=InnoDB DEFAULT CHARSET=utf8 PARTITION BY RANGE (`runoob_id`)( PARTITION p0 VALUES LESS THAN(100), PARTITION p1 VALUES LESS THAN(200), PARTITION p2 VALUES LESS THAN(300), PARTITION p3 VALUES LESS THAN(400), PARTITION p4 VALUES LESS THAN(500), PARTITION p5 VALUES LESS THAN (MAXVALUE) ); ALTER TABLE `runoob_tbl_part_test` ADD PARTITION (PARTITION p6 VALUES LESS THAN (600)); ALTER TABLE `runoob_tbl_part_test` ADD PARTITION (PARTITION p7 VALUES LESS THAN (700),PARTITION p8 VALUES LESS THAN (800)); 输出示例 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 TABLE IF NOT EXISTS "public"."runoob_tbl_part_test" ( "runoob_id" INTEGER NOT NULL, "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 BY RANGE ("runoob_id") ( PARTITION p0 VALUES LESS THAN (100), PARTITION p1 VALUES LESS THAN (200), PARTITION p2 VALUES LESS THAN (300), PARTITION p3 VALUES LESS THAN (400), PARTITION p4 VALUES LESS THAN (500), PARTITION p5 VALUES LESS THAN (MAXVALUE) ); ALTER TABLE "public"."runoob_tbl_part_test" ADD PARTITION p6 VALUES LESS THAN (600); ALTER TABLE "public"."runoob_tbl_part_test" ADD PARTITION p7 VALUES LESS THAN (700), ADD PARTITION p8 VALUES LESS THAN (800);
  • Unique Index 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 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 CREATE TABLE prod ( prod_no number(6) not null unique, prod_name national character varying(32) not null, prod_desc clob ) DISTRIBUTE ON (prod_no) ORGANIZE ON (prod_no, prod_name) ; ---------- CREATE TABLE prod ( prod_no number(6) not null CONSTRAINT UQ_prod unique, prod_name national character varying(32) not null, prod_desc clob ) DISTRIBUTE ON (prod_no) ORGANIZE ON (prod_no, prod_name) ; ---------- CREATE TABLE prod ( prod_no number(6) not null PRIMARY KEY, prod_name national character varying(32) not null, prod_desc clob ) DISTRIBUTE ON (prod_no) ORGANIZE ON (prod_no, prod_name) ; ---------- CREATE TABLE prod ( prod_no number(6) not null, prod_name national character varying(32) not null, prod_desc clob, constraint uq_prod UNIQUE (prod_no) ) DISTRIBUTE ON (prod_no) ORGANIZE ON (prod_no, prod_name) ; ---------- CREATE TABLE prod ( prod_no number(6) not null, prod_name national character varying(32) not null, prod_desc clob ) DISTRIBUTE ON (prod_no) ORGANIZE ON (prod_no, prod_name) ; ALTER TABLE prod ADD constraint uq_prod UNIQUE (prod_no); 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 49 50 51 52 53 54 55 CREATE TABLE prod ( prod_no number(6) not null /* unique */, prod_name national character varying(32) not null, prod_desc clob ) WITH(ORIENTATION=COLUMN) DISTRIBUTE BY HASH (prod_no) /* ORGANIZE ON (prod_no, prod_name) */ ; ---------- CREATE TABLE prod ( prod_no number(6) not null /* CONSTRAINT UQ_prod unique */, prod_name national character varying(32) not null, prod_desc clob ) WITH(ORIENTATION=COLUMN) DISTRIBUTE BY HASH (prod_no) /* ORGANIZE ON (prod_no, prod_name) */ ; ---------- CREATE TABLE prod ( prod_no number(6) not null /* PRIMARY KEY */, prod_name national character varying(32) not null, prod_desc clob ) WITH(ORIENTATION=COLUMN) DISTRIBUTE BY HASH (prod_no) /* ORGANIZE ON (prod_no, prod_name) */ ; ---------- CREATE TABLE prod ( prod_no number(6) not null, prod_name national character varying(32) not null, prod_desc clob /*, constraint uq_prod UNIQUE (prod_no) */ ) WITH(ORIENTATION=COLUMN) DISTRIBUTE BY HASH (prod_no) /* ORGANIZE ON (prod_no, prod_name)*/ ; ---------- CREATE TABLE prod ( prod_no number(6) not null, prod_name national character varying(32) not null, prod_desc clob ) DISTRIBUTE BY HASH (prod_no) /*ORGANIZE ON (prod_no, prod_name)*/ ; /* ALTER TABLE prod ADD constraint uq_prod UNIQUE (prod_no); */ 仅适用于COLUMN store。对于ROW存储,不应注释“唯一索引”。
  • PG_LANGUAGE PG_LANGUAGE系统表登记编程语言,用户可以用这些语言或接口写函数或者存储过程。 表1 PG_LANGUAGE字段 名字 类型 引用 描述 oid oid - 行标识符(隐藏属性,必须明确选择才会显示)。 lanname name - 语言的名称。 lanowner oid PG_AUTHID.oid 语言的所有者。 lanispl boolean - 内部语言为假(比如SQL),用户定义语言为真。目前,gs_dump仍然使用该字段判断哪些语言需要转储,但可能在将来会被其它机制所取代。 lanpltrusted boolean - 如果是可信语言则为真,即系统相信它不会被授予任何正常SQL执行环境之外的权限。只有初始用户可以在用非可信的语言创建函数。 lanplcallfoid oid PG_PROC.oid 对于非内部语言,这是指该语言处理器的引用,语言处理器是一个特殊函数, 负责执行以某种语言写的所有函数。 laninline oid PG_PROC.oid 此字段引用一个负责执行“inline”匿名代码块的函数(DO块)。如果不支持内联块则为0。 lanvalidator oid PG_PROC.oid 此字段引用一个语言校验器函数,它负责检查新创建函数的语法和有效性。如果没有提供校验器,则为0。 lanacl aclitem[] - 访问权限。 父主题: 系统表
  • DELAY_KEY_WRITE DELAY_KEY_WRITE只对MyISAM引擎表有作用,根据DELAY_KEY_WRITE的值来延迟更新直至表关闭。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) ) ENGINE=MyISAM, DELAY_KEY_WRITE=0; ALTER TABLE `public`.`runoob_tbl_test6` DELAY_KEY_WRITE=1; 输出示例 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"); 父主题: 表(可选参数、操作)
  • CHARACTER SET和CASESPECIFIC CHARACTER SET用于指定字符列的服务器字符集,CASESPECIFIC用于指定字符数据比较及排序时的大小写情况。 可以使用tdMigrateCharsetCase参数来配置是否迁移CHARACTER SET和CASESPECIFIC。如果该参数设为false,则工具将跳过该查询的迁移并记录消息。 输入:tdMigrateCharsetCase=True 1 2 3 4 5 6 7 8 CREATE MULTISET VOLATILE TABLE TAB1 ( col1 INTEGER NOT NULL ,col2 INTEGER NOT NULL ,col3 VARCHAR(100) NOT NULL CHARACTER SET UNICODE CASESPECIFIC ) PRIMARY INDEX (col1,col2) ON COMMIT PRESERVE ROWS ; 输出 1 2 3 4 5 6 7 8 9 10 CREATE LOCAL TEMPORARY TABLE TMP_RATING_SYS_PARA ( col1 INTEGER NOT NULL ,col2 INTEGER NOT NULL ,col3 VARCHAR(100) NOT NULL /* CHARACTER SET UNICODE CASESPECIFIC */) ) ON COMMIT PRESERVE ROWS DISTRIBUTE BY HASH (col1,col2) ; 输入:迁移支持的字符数据类型 在Teradata中,以下字符集支持以字符个数来衡量字符串数据类型的长度: LATIN UNICODE GRAPHIC 不过,KANJISJIS字符集支持以字节个数来衡量字符串数据类型的长度。 以COLUMN_NAME VARCHAR(100) CHARACTER SET UNICODE CASESPECIFIC COLUMN_NAME VARCHAR(100) CHARACTER SET LATIN CASESPECIFIC为例,字符串最大支持100个字符(而不是字节)。 在GaussDB A中,字符串数据类型长度通过字节(而不是字符)来衡量。 VARCHAR(100)和VARCHAR2(100)最多支持100个字节(而不是字符)。 但是NVARCHAR2(100)最大可支持100个字符。 因此,如果Teradata使用LATIN、UNICODE或GRAPHIC字符集,VARCHAR应迁移为NVARCHAR。 1 2 3 4 5 CREATE TABLE tab1 ( col1 VARCHAR(10), COL2 CHAR(1) ); 输出 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 a)when default_charset = UNICODE/GRAPHIC CREATE TABLE tab1 ( col1 NVARCHAR2 (10) ,COL2 NVARCHAR2 (1) ) ; b)when default_charset = LATIN CREATE TABLE tab1 ( col1 VARCHAR2 (10) ,COL2 VARCHAR2 (1) ) ; 输入 1 2 3 4 5 CREATE TABLE tab1 ( col1 VARCHAR(10) CHARACTER SET UNICODE, COL2 CHAR(1) ); 输出 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 a) when default_charset = UNICODE/GRAPHIC CREATE TABLE tab1 ( col1 NVARCHAR2 (10) /* CHARACTER SET UNICODE*/ ,COL2 NVARCHAR2( 1 ) ) ; b) when default_charset = LATIN CREATE TABLE tab1 ( col1 NVARCHAR2 (10) /* CHARACTER SET UNICODE*/ ,COL2 CHAR(1) ) ; 父主题: 表迁移
  • SET SET是Teradata的独有功能。它不允许重复的记录。它使用MINUS集合操作符来实现。DSC支持MULTISET和SET表。SET表支持与VOLATILE一起使用。 输入:SET TABLE 1 2 3 4 5 CREATE SET VOLATILE TABLE tab1 … ; INSERT INTO tab1 SELECT expr1, expr2, … FROM tab1, … WHERE ….; 输出 1 2 3 4 5 6 7 CREATE LOCAL TEMPORARY TABLE tab1 … ; INSERT INTO tab1 SELECT expr1, expr2, … FROM tab1, … WHERE …. MINUS SELECT * FROM tab1 ; 父主题: 表迁移
  • LIKE ANY/NOT LIKE ANY 输入:LIKE ANY/NOT LIKE ANY 1 2 3 SELECT c1, c2 FROM tab1 WHERE c3 LIKE ANY ('STR1%', 'STR2%', 'STR3%'); 输出 1 2 3 SELECT c1, c2 FROM tab1 WHERE c3 LIKE ANY (ARRAY[ 'STR1%', 'STR2%', 'STR3%' ]);
  • LIKE ALL/NOT LIKE ALL 输入:LIKE ALL/NOT LIKE ALL 1 2 3 SELECT c1, c2 FROM tab1 WHERE c3 NOT LIKE ALL ('%STR1%', '%STR2%', '%STR3%'); 输出 1 2 3 SELECT c1, c2 FROM tab1 WHERE c3 NOT LIKE ALL (ARRAY[ '%STR1%', '%STR2%', '%STR3%' ]);
  • 表(可选参数、操作) 本节主要介绍表(可选参数、操作)的迁移语法。迁移语法决定了关键字/功能的迁移方式。GaussDB(DWS)不支持表(可选参数),目前针对表(可选参数)的迁移方法都是临时迁移方法。 ALGORITHM ALTER TABLE RENAME AUTO_INCREMENT AVG_ROW_LENGTH BLOCK_SIZE CHARSET CHECKSUM CLUSTERED KEY COLLATE COMMENT CONNECTION DEFAULT DELAY_KEY_WRITE DISTRIBUTE BY DIRECTORY ENGINE FOREIGN_KEY_CHECKS IF NOT EXISTS INDEX_ALL INSERT_METHOD KEY_BLOCK_SIZE LOCK MAX_ROWS MIN_ROWS PACK_KEYS PARTITION BY PASSWORD ROW_FORMAT STATS_AUTO_RECALC STATS_PERSISTENT STATS_SAMPLE_PAGES UNION WITH AS CHANGE修改列 CHECK约束 DROP删除表 LIKE 表克隆 MODIFY修改列 TRUNCATE 删除表 ROUNDROBIN表 RENAME 重命名表名 设置与清除列默认值 字段名重命名 行列存压缩 添加与删除列 父主题: 模式对象与数据定义(DDL)
  • COMMENT语句 输入 输出 CREATE MULTISET TABLE PDAT.t_tbl_comment ( Data_Dt DATE NOT NULL ,Data_Src VARCHAR(4) NOT NULL ,List_Make_Stat CHAR(1) ) PRIMARY INDEX(Data_Dt,Data_Src) ; COMMENT ON PDAT.t_tbl_comment IS 'comment test on table'; --------------- REPLACE VIEW PVW.v_vw_comment AS LOCKING ROW FOR ACCESS SELECT Data_Dt, Data_Src, List_Make_Stat FROM PDAT.t_tbl_comment; COMMENT ON PVW.v_vw_comment IS 'comment test on view'; COMMENT ON PVW.v_vw_comment.Data_Dt IS 'comment test on view column'; COMMENT ON TABLE PDAT.t_tbl_comment IS 'comment test on table'; COMMENT ON VIEW PVW.v_vw_comment IS 'comment test on view'; COMMENT ON COLUMN PVW.v_vw_comment.Data_Dt IS 'comment test on view column'; 父主题: 模式对象与数据定义(DDL)
  • SSL证书和客户端配置 用户需要配置客户端配置。 GaussDB(DWS) 提供SSL证书下载。 登录GaussDB(DWS) 管理控制台,在左侧导航栏中,进入“连接客户端”页面。在“下载驱动程序”区域,单击“下载SSL证书”进行下载。 将下载的压缩包“dws_ssl_cert.zip”解压,得到证书文件。然后在Data Studio客户端单击“SSL”页签,设置如下参数: 表1 配置SSL参数 字段名称 说明 客户端SSL证书 选择SSL证书解压目录下的“sslcert\client.crt”文件。 客户端SSL密钥 客户端SSL密钥只支持PK8格式,请选择SSL证书解压目录下的“sslcert\client.key.pk8”文件。 根证书 当“SSL模式”设为“verify-ca”或“verify-full”时,必须设置根证书,请选择SSL证书解压目录下的“sslcert\cacert.pem”文件。 SSL密码 客户端pk8格式SSL密钥密码。 SSL模式 GaussDB(DWS) 支持的SSL模式有: require:所使用的SSL factory无需验证,不会验证证书有效性。 verify-ca:会使用相应的SSL factory检查CA是否正确。 verify-full:会使用相应的SSL factory检查CA和数据库是否正确。 GaussDB(DWS) 不支持“verify-full”模式。 选择“客户端SSL证书”和“客户端SSL密钥”,可使用安全连接从Data Studio中导出DDL和数据。 如果为“客户端SSL证书”和“客户端SSL密钥”选择了无效的文件,将导致导出失败。有关详情,请参见故障处理。 如果取消选中“启用SSL”复选框并继续操作,则会弹出“连接安全告警”对话框。要设置是否显示该安全告警,请参见表1。 “继续”:单击“继续”,继续使用不安全的连接。 “取消”:单击“取消”并启用SSL。 “不再显示”:如果勾选该字段,当前登录的Data Studio实例在后续连接时,不再显示“连接安全告警”对话框。 Data Studio首次访问gs-dump特性时,会弹框要求输入客户端密钥。 图1 配置SSL参数
  • PG_NAMESPACE PG_NAMESPACE系统表存储命名空间,即存储schema相关的信息。 表1 PG_NAMESPACE字段 名称 类型 描述 nspname name 命名空间的名称。 nspowner oid 命名空间的所有者。 nsptimeline bigint 在DN上创建此命名空间时的时间线。此字段为内部使用,仅在DN上有效。 nspacl aclitem[] 访问权限。具体请参见GRANT和REVOKE。 permspace bigint schema永久表空间限额。 usedspace bigint schema已用永久表空间大小。 父主题: 系统表
  • 错误日志 DSC仅将迁移过程中发生的错误记录到DSCError.log文件中。该文件位于log文件夹中。DSCError.log文件包含这些错误的日期、时间,文件详细信息(如文件名),以及查询位置等信息。错误日志的记录级别为ERROR。 DSCError.log的文件结构如下: 2017-06-29 14:07:39,585 ERROR TeradataBulkHandler:172 Error occurred during processing of input in Bulk Migration. PreQueryValidation failed in not proper termination or exclude keyword. /home/testmigration/Documentation/Input/c005.sql for Query in position : 4 2017-06-29 14:07:39,962 ERROR TeradataBulkHandler:172 Error occurred during processing of input in Bulk Migration. PreQueryValidation failed in not proper termination or exclude keyword. /home/testmigration/Documentation/Input/c013.sql for Query in position : 11 2017-06-29 14:07:40,136 ERROR QueryConversionUtility:250 Query is not converted as it contains unsupported keyword: join select 2017-06-29 14:07:40,136 ERROR TeradataBulkHandler:172 Error occurred during processing of input in Bulk Migration. PreQueryValidation failed in not proper termination or exclude keyword. /home/testmigration/Documentation/Input/sample.sql for Query in position : 1 2017-06-29 14:07:40,136 ERROR TeradataBulkHandler:172 Error occurred during processing of input in Bulk Migration. PreQueryValidation failed in not proper termination or exclude keyword. /home/testmigration/Documentation/Input/sample.sql for Query in position : 3
  • 活动日志 DSC将所有日志和错误信息保存到DSC.log文件中。该文件位于log文件夹中。DSC.log文件包含执行迁移的用户、迁移的文件、时间戳等详细信息。活动日志的记录级别为INFO。 DSC.log的文件结构如下: 2020-01-22 09:35:10,769 INFO CLMigrationUtility:159 DSC is initiated by xxxxx 2020-01-22 09:35:10,828 INFO CLMigrationUtility:456 Successfully changed permission of files in D:\Migration\Gauss_Tools_18_Migration\code\migration\config 2020-01-22 09:35:10,832 INFO PropertyLoader:90 Successfully loaded Property file : D:\Migration\Gauss_Tools_18_Migration\code\migration\config\application.properties 2020-01-22 09:35:10,833 INFO ApplicationPropertyLoader:42 Application properties have been loaded Successfully 2020-01-22 09:35:10,917 INFO MigrationValidatorService:549 Files in output directory has been overwritten as configured by xxxxx 2020-01-22 09:35:10,920 INFO PropertyLoader:90 Successfully loaded Property file : D:\Migration\Gauss_Tools_18_Migration\code\migration\config\features-oracle.properties 2020-01-22 09:35:10,921 INFO FeatureLoader:41 Features have been loaded Successfully 2020-01-22 09:35:10,926 INFO MigrationService:80 DSC process start time : Wed Jan 22 09:35:10 GMT+05:30 2020 2020-01-22 09:35:10,933 INFO FileHandler:179 File is not supported. D:\Migration_Output\Source\ARRYTYPE.sql- 2020-01-22 09:35:10,934 INFO FileHandler:179 File is not supported. D:\Migration_Output\Source\varray.sql- 2020-01-22 09:35:12,816 INFO PropertyLoader:90 Successfully loaded Property file : D:\Migration\Gauss_Tools_18_Migration\code\migration\config\global-temp-tables.properties 2020-01-22 09:35:12,830 INFO PropertyLoader:90 Successfully loaded Property file : D:\Migration\Gauss_Tools_18_Migration\code\migration\config\create-types-UDT.properties 2020-01-22 09:35:12,834 INFO PropertyLoader:90 Successfully loaded Property file : D:\Migration\Gauss_Tools_18_Migration\code\migration\config\package-names-oracle.properties 2020-01-22 09:35:12,849 INFO DBMigrationService:76 Number of Available Processors: 4 2020-01-22 09:35:12,850 INFO DBMigrationService:78 Configured simultaneous processes in the Tool : 3 2020-01-22 09:35:13,032 INFO MigrationProcessor:94 File name: D:\Migration_Output\Source\Input.sql is started 2020-01-22 09:35:13,270 INFO FileHandler:606 guessencoding command output = Error: Unable to access jarfile D:\Migration\Gauss_Tools_18_Migration\code\migration\RE_migration\target\dsctool.jar , for file= D:\Migration_Output\Source\Input.sql 2020-01-22 09:35:13,272 INFO FileHandler:625 couldn't get the encoding format, so using the default charset for D:\Migration_Output\Source\Input.sql 2020-01-22 09:35:13,272 INFO FileHandler:310 File D:\Migration_Output\Source\Input.sql will be read with charset : UTF-8 2020-01-22 09:35:13,390 INFO FileHandler:668 D:\Migration_Output\target\output\Input.sql - File already exists/Failed to create target file 2020-01-22 09:35:13,562 INFO FileHandler:606 guessencoding command output = Error: Unable to access jarfile D:\Migration\Gauss_Tools_18_Migration\code\migration\RE_migration\target\dsctool.jar , for file= D:\Migration_Output\Source\Input.sql 2020-01-22 09:35:13,563 INFO FileHandler:625 couldn't get the encoding format, so using the default charset for D:\Migration_Output\Source\Input.sql 2020-01-22 09:35:13,563 INFO FileHandler:675 File D:\Migration_Output\Source\Input.sql will be written with charset : UTF-8 2020-01-22 09:35:13,604 INFO MigrationProcessor:139 File name: D:\Migration_Output\Source\Input.sql is processed successfully 2020-01-22 09:35:13,605 INFO MigrationService:147 Total number of files in Input folder : 3 2020-01-22 09:35:13,605 INFO MigrationService:148 Total number of queries : 1 22020-01-22 09:35:13,607 INFO PropertyLoader:164 Successfully updated Property file : D:\Migration\Gauss_Tools_18_Migration\code\migration\config\global-temp-tables.properties 2020-01-22 09:35:13,630 INFO PropertyLoader:164 Successfully updated Property file : D:\Migration\Gauss_Tools_18_Migration\code\migration\config\create-types-UDT.properties 2020-01-22 09:35:13,631 INFO PropertyLoader:164 Successfully updated Property file : D:\Migration\Gauss_Tools_18_Migration\code\migration\config\package-names-oracle.properties 2020-01-22 09:35:13,632 INFO CLMigrationUtility:305 Log file : dsc.log and the file is present in the path : D:\Migration_Output\log 2020-01-22 09:35:13,632 INFO CLMigrationUtility:312 DSC process end time : Wed Jan 22 09:35:13 GMT+05:30 2020 2020-01-22 09:35:13,632 INFO CLMigrationUtility:217 Total process time : 2842 seconds
  • 成功读 在DSC读取文件之后,该文件将被记录日志以进行跟踪。在某些情况下,用户可通过这些日志获取文件执行状态的信息。该文件位于log文件夹中。日志文件包括日期、时间、文件名等详细信息。此日志文件的日志记录级别为INFO。 successRead.log的文件结构如下: 2017-07-21 14:13:00,461 INFO readlogger:213 /home/testmigration/Documentation/is not in.sql is read successfully. 2017-07-21 14:13:00,957 INFO readlogger:213 /home/testmigration/Documentation/date quotes.sql is read successfully. 2017-07-21 14:13:01,509 INFO readlogger:213 /home/testmigration/Documentation/column alias replace.sql is read successfully. 2017-07-21 14:13:02,034 INFO readlogger:213 /home/testmigration/Documentation/sampleRownum.sql is read successfully. 2017-07-21 14:13:02,578 INFO readlogger:213 /home/testmigration/Documentation/samp.sql is read successfully. 2017-07-21 14:13:03,145 INFO readlogger:213 /home/testmigration/Documentation/2.6BuildInputs/testWithNodataSamples.sql is read successfully.
  • 成功写 DSC读取、处理文件并将输出写入磁盘。这个过程被记录到成功写日志文件中。在某些情况下,用户可通过此文件了解哪些文件已处理成功。在重新运行的情况下,用户可以跳过这些文件运行剩余的文件。该文件位于log文件夹中。日志文件包括日期、时间、文件名等详细信息。此日志文件的日志记录级别为INFO。 successWrite.log的文件结构如下: 2017-07-21 14:13:00,616 INFO writelogger:595 /home/testmigration/Documentation/is not in.sql has written successfully. 2017-07-21 14:13:01,055 INFO writelogger:595 /home/testmigration/Documentation/date quotes.sql has written successfully. 2017-07-21 14:13:01,569 INFO writelogger:595 /home/testmigration/Documentation/column alias replace.sql has written successfully. 2017-07-21 14:13:02,055 INFO writelogger:595 /home/testmigration/Documentation/sampleRownum.sql has written successfully. 2017-07-21 14:13:02,597 INFO writelogger:595 /home/testmigration/Documentation/samp.sql has written successfully. 2017-07-21 14:13:03,178 INFO writelogger:595 /home/testmigration/Documentation/testWithNodataSamples.sql has written successfully.
  • ACCESS LOCK ACCESS LOCK允许用户从可能已经锁定READ或WRITE的表中读取数据。 可以通过tdMigrateLOCKoption参数来配置如何对包含LOCK关键字的查询进行迁移。如果该参数设置为false,工具将跳过该查询的迁移并记录日志。 输入:ACCESS LOCK(tdMigrateLOCKOption=True) 1 2 3 4 5 LOCKING TABLE tab1 FOR ACCESS INSERT INTO tab2 SELECT … FROM … WHERE ...; 输出 1 2 3 4 5 /* LOCKING TABLE tab1 FOR ACCESS */ INSERT INTO tab2 SELECT … FROM … WHERE ...; 父主题: 模式对象与数据定义(DDL)
  • 示例 数据文件存放在“/data” 目录,IP为192.168.0.90,监听端口为5000。 gds -d /data/ -p 192.168.0.90:5000 -H 10.10.0.1/24 数据文件存放在“/data/” 目录下的任意子目录,IP为192.168.0.90,监听端口为5000。 gds -d /data/ -p 192.168.0.90:5000 -H 10.10.0.1/24 -r 数据文件存放在“/data/ ”目录,IP为192.168.0.90,监听端口为5000,以后台方式运行,将日志保存在“/log/gds_log.txt”文件中,指定并发导入工作线程数目为32。 gds -d /data/ -p 192.168.0.90:5000 -H 10.10.0.1/24 -l /log/gds_log.txt -D -t 32 数据文件存放在“/data/ ”目录,IP为192.168.0.90,监听端口为5000,只允许IP为10.10.0.*的节点进行连接。 gds -d /data/ -p 192.168.0.90:5000 -H 10.10.0.1/24 数据文件存放在“/data/ ”目录,IP为192.168.0.90,监听端口为5000,只允许IP为10.10.0.*的节点进行连接,设定为使用SSL认证的方式与集群通信,证书文件存放在/certfiles/目录。 gds -d /data/ -p 192.168.0.90:5000 -H 10.10.0.1/24 --enable-ssl --ssl-dir /certfiles/ 1个GDS在同一时刻,只能为1个集群提供导入导出服务; 为满足安全要求,请通过-p显式指定监听ip和监听端口。 证书文件包括根证书文件cacert.pem,以及二级证书文件client.crt和密钥文件client.key。 在加载证书时,需要使用密码保护文件client.key.rand和client.key.cipher。
  • GROUP BY转换 MySQL/ADB 分组查询的时候允许查询非分组字段,不报错;DWS分组查询时只能查询分组字段和聚集函数,报错。因此补齐没有group by的查询分组字段。 输入示例 1 SELECT e.department_id, department_name, ROUND(AVG(salary), 0) avg_salary FROM employees e JOIN departments d on e.department_id = d.department_id GROUP BY department_name ORDER BY department_name; 输出示例 1 2 3 4 5 6 7 8 9 10 11 12 SELECT e.department_id, department_name, ROUND (AVG(salary), 0) AS "avg_salary" FROM employees "e" JOIN departments "d" ON e.department_id = d.department_id GROUP BY department_name, 1 ORDER BY department_name; 父主题: SELECT
  • ROW_FORMAT ROW_FORMAT定义了行存储的物理形式。ROW_FORMAT的选择与存储引擎有关,如果在创建表的时候选择了存储引擎不相关的ROW_FORMAT,则使用默认的ROW_FORMAT创建表。当ROW_FORMAT取值为DEFAULT,DSC迁移为SET NOCOMPRESS;当ROW_FORMAT取值为COMPRESSED时,DSC迁移为SET COMPRESS。GaussDB(DWS)不支持其他取值,当取其他值时DSC迁移时会将该属性删除。 输入示例 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 TABLE `public`.`runoob_alter_test`( `dataType1` int NOT NULL AUTO_INCREMENT, `dataType2` FLOAT(10,2), `dataType3` DOUBLE(20,8), `dataType4` TEXT NOT NULL, PRIMARY KEY(`dataType1`) ) ENGINE=InnoDB; ## A. ALTER TABLE runoob_alter_test ROW_FORMAT DEFAULT; ALTER TABLE runoob_alter_test ROW_FORMAT=DEFAULT; ## B. ALTER TABLE runoob_alter_test ROW_FORMAT DYNAMIC; ALTER TABLE runoob_alter_test ROW_FORMAT=DYNAMIC; ## C. ALTER TABLE runoob_alter_test ROW_FORMAT COMPRESSED; ALTER TABLE runoob_alter_test ROW_FORMAT=COMPRESSED; ## D. ALTER TABLE runoob_alter_test ROW_FORMAT REDUNDANT; ALTER TABLE runoob_alter_test ROW_FORMAT=REDUNDANT; ## E. ALTER TABLE runoob_alter_test ROW_FORMAT COMPACT; ALTER TABLE runoob_alter_test ROW_FORMAT=COMPACT; 输出示例 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 "public"."runoob_alter_test" ( "datatype1" SERIAL NOT NULL, "datatype2" REAL, "datatype3" DOUBLE PRECISION, "datatype4" TEXT NOT NULL, PRIMARY KEY ("datatype1") ) WITH ( ORIENTATION = ROW, COMPRESSION = NO ) NOCOMPRESS DISTRIBUTE BY HASH ("datatype1"); -- A. ALTER TABLE "public"."runoob_alter_test" SET NOCOMPRESS; ALTER TABLE "public"."runoob_alter_test" SET NOCOMPRESS; -- B. -- C. ALTER TABLE "public"."runoob_alter_test" SET COMPRESS; ALTER TABLE "public"."runoob_alter_test" SET COMPRESS; -- D. -- E. 父主题: 表(可选参数、操作)
  • PG_STAT_DATABASE PG_STAT_DATABASE视图显示当前节点上每个数据库的状态和统计信息。 表1 PG_STAT_DATABASE字段 名称 类型 描述 datid oid 数据库OID。 datname name 数据库名。 numbackends integer 当前节点上连接到该数据库的后端数。 这是该视图中唯一一个反映目前状态值的列;所有列均返回自上次重置以来的累积值。 xact_commit bigint 当前节点上该数据库中已经提交的事务数。 xact_rollback bigint 当前节点上该数据库中已经回滚的事务数。 blks_read bigint 当前节点上该数据库中读取的磁盘块的数量。 blks_hit bigint 当前节点上高速缓存中发现的磁盘块的个数,即缓存中命中的块数(只包括GaussDB(DWS)缓冲区高速缓存,不包括文件系统的缓存)。 tup_returned bigint 当前节点上该数据库查询返回的行数。 tup_fetched bigint 当前节点上该数据库查询抓取的行数。 tup_inserted bigint 当前节点上该数据库插入的行数。 tup_updated bigint 当前节点上该数据库更新的行数。 tup_deleted bigint 当前节点上该数据库删除的行数。 conflicts bigint 当前节点上由于数据库恢复冲突取消的查询数量(只在备用服务器上发生)。可参见PG_STAT_DATABASE_CONFLI CTS 。 temp_files bigint 当前节点上该数据库创建的临时文件个数。计算所有临时文件,不论为什么创建临时文件(比如排序或者哈希),而且不考虑log_temp_files设置。 temp_bytes bigint 当前节点上该数据库写入临时文件的大小。计算所有临时文件,不论为什么创建临时文件,而且不考虑log_temp_files设置。 deadlocks bigint 当前节点上该数据库中发生的死锁数量。 blk_read_time double precision 当前节点上该数据库后端读取数据文件块花费的时间,以毫秒计算。 blk_write_time double precision 当前节点上该数据库后端写入数据文件块花费的时间,以毫秒计算。 stats_reset timestamp with time zone 当前节点上该数据库统计重置的时间。 父主题: 系统视图
  • 示例 启动一个GDS进程,其数据文件存放在“/data” 目录,IP为192.168.0.90,监听端口为5000。 gds_ctl start --host 192.168.0.90 -d /data/ -p 5000 -H 10.10.0.1/24 -D 启动一批GDS进程,其数据文件存放在“/data” 目录,IP为192.168.0.90、192.168.0.91、192.168.0.92,监听端口为5000。 gds_ctl start --host 192.168.0.90,192.168.0.91,192.168.0.92 -d /data/ -p 5000 -H 0/0 -D 批量关闭位于192.168.0.90、192.168.0.91、192.168.0.92节点上,端口是5000的GDS进程: gds_ctl stop --host 192.168.0.90,192.168.0.91,192.168.0.92 -p 5000 批量重启位于192.168.0.90、192.168.0.91、192.168.0.92节点上,端口是5000的GDS进程: gds_ctl restart --host 192.168.0.90,192.168.0.91,192.168.0.92 -p 5000
共100000条