华为云用户手册

  • 重建索引 使用索引可帮助用户更快地查找数据。以下场景需要重建索引: 索引已破坏,不再包含任何有效数据。虽然理论上不会发生,但事实上,索引可能由于软件或硬件故障而被破坏重建索引提供恢复方法。 索引包含很多空的或几乎为空的页面,DWS数据库的B-tree索引在特定的非常规访问模式下可能会发生这种情况,REINDEX方式可以减少索引的空间消耗,即创建一个新的索引,不再有空页面。 已修改索引的存储参数(如“填充因子”),且希望保证修改完全生效。 执行以下操作重建索引: 右键单击表,选择“重建索引”。弹出消息和状态栏显示已完成操作的状态。 分区ORC表不支持重建索引。
  • 添加约束 右键单击表下的“约束”,选择“添加约束”。 弹出“添加新约束”对话框,提示在新约束中输入信息。 约束类型有CHECK、PRIMARY KEY、UNIQUE三个选项,详细说明请参考定义表约束。 输入“约束名”和“选定的列”,单击“添加”。完成操作后,该约束添加到表中。 Data Studio在状态栏显示操作状态信息。 如果“约束名”字段中已经提供了约束名称,则状态栏将显示该约束名称,否则将不显示该约束名。
  • ANALYZE Teradata的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); 父主题: 表迁移
  • 详细配置说明 参数 说明 默认值 支持版本 url dws数据库JDBC连接地址。 - 1.0 username dws数据库用户名。 - password dws数据库用户密码。 - connectionMaxUseTimeSeconds 连接最大使用时间(秒),超过该时间会强制关闭当前连接并重新获取;使用COPY_MERGE/COPY_UPSERT时会使用临时表,临时表的schema在连接断开时才会清除,主要用于清除该部分数据。 3600 connectionMaxIdleMs 连接最大空闲时间(毫秒)。 60000 metadataCacheSeconds 元数据缓存时间(秒),为提升性能,会对理论上不怎么变更的数据,例如表结构,该参数用于设置缓存过期时间。 180 retryBaseTime 重试时sleep时间 = retryBaseTime * 次数 + (0~retryRandomTime)毫秒,该参数设置时间基数(毫秒)。 1000 retryRandomTime retryBaseTime重试时sleep时间 = retryBaseTime * 次数 +(0~retryRandomTime)毫秒,该参数设置重试时的随机数范围,该参数主要用于在死锁场景将两个task执行时间错开(毫秒)。 300 maxFlushRetryTimes 执行刷库任务时,最大尝试执行次数。 3 autoFlushBatchSize 后台任务刷库策略:缓存条数大于等于autoFlushBatchSize或者当前时间 - 缓存开始时间大于等于autoFlushMaxIntervalMs,该参数配置缓存最大条数。 5000 autoFlushMaxIntervalMs 后台任务刷库策略:缓存条数大于等于autoFlushBatchSize或者当前时间 - 缓存开始时间大于等于autoFlushMaxIntervalMs,该参数配置缓存最大时间(毫秒)。 3000 copyWriteBatchSize 在writeMode设置为AUTO时,在数据量低于copyWriteBatchSize时会使用upsert方式入库,否则根据是否有主键选择copy/copy+ upsert方式入库。 6000 writeMode 数据写入模式: AUTO: 数据量低于copyWriteBatchSize使用UPSERT方式入库,否则使用COPY_UPSERT方式入库。 COPY_MERGE: 有主键使用copy+merge入库。 无主键使用copy入库。 COPY_UPSERT: 无主键使用copy入库。 有主键使用copy + upsert入库。 UPSERT: 无主键使用insert into。 有主键使用upsert入库。 UPDATE: 使用update where语法更新数据,若原表无主键可选择指定uniqueKeys,指定字段不要求必须是唯一索引,但非唯一索引可能会影响性能。 COPY_UPDATE: 数据先通过copy方式入库到临时表,通过临时表加速使用update from where方式更新目标数据。 UPDATE_AUTO: 批量小于copyWriteBatchSize使用UPDATE,否则使用COPY_UPDATE。 AUTO conflictStrategy 数据库存在主键时的主键冲突策略: INSERT_OR_IGNORE:主键冲突时忽略新数据。 INSERT_OR_UPDATE:主键冲突时使用新的数据列更新原数据对应列。 INSERT_OR_REPLACE:主键冲突时使用新数据替换原数据,数据库中新数据不包含列设置为null,对于全列更新和INSERT_OR_UPDATE无差异。 INSERT_OR_UPDATE threadSize 执行任务时的并发数量,异步任务中以表为维度提交任务,多表之间可并发;对于同一个表存在对字段列数不同的操作,例如在攒批中存在100条操作A B C字段、200条操作A B D字段那么最后会将操作字段一样的归为一类,不同类之间可并发入库,设置该参数可参考这两个场景设置,以提升吞吐。 3 logSwitch 日志开关,开启后会打印比较详细的过程日志,便于在调试或定位问题时开启。 false logDataTables 入库时需要打印数据的表,便于在定位问题时对比数据。 - flushSuccessFunction 数据入库成功后的回调函数。 - errorFunction 后台任务执行失败的回调函数。 - batchOutWeighRatio 为提高整体吞吐,当对autoFlushBatchSize要求不是很严格时,可设置该参数,当往buffer中提交数据时buffer中数据量大于batchOutWeighRatio * autoFlushBatchSize时提交线程将会执行提交入库的任务,该参数用于避免业务线程提交任务,尽量使用后台线程执行提交。 1 tableConfig 对于conflictStrategy、writeMode、copyWriteBatchSize、autoFlushMaxIntervalMs、autoFlushBatchSize、batchOutWeighRatio在多表共用一个client的情况可能需要根据不同表配置不同值,该参数可实现以上参数的表级配置,在未配置的表则生效全局参数。 说明: 注意一旦配置表级参数,其它表级参数也会被设置默认值,必须将其它表级参数也设置上。 - uniqueKeys 该参数为表级参数必须通过tableConfig配置,该参数用于在表中无主键但是有唯一索引时,在入库时使用该参数指定字段做唯一约束,在update场景中该字段不需要是唯一索引或者主键,但upsert场景必须要唯一索引或主键。 - 1.0.3 copyMode 使用copy入库的格式: CS V:将数据拼接成字符串数据用双引号包裹的CSV格式,其中字段间以逗号分割,数据间以换行分割。使用jdbc copy api入库,该方式性能略低于DELIMITER方式,但比较稳定可靠。 DELIMITER:将数据字段使用copy api入库,其中字符间以0X1E分割,数据间以0X1F分割。该方式要求数据不包含分隔符,如包含将报错不能正常入库,且该方式定义null字符串为null数据,如果数据为null字符串将被设置为null。 CSV 1.0.6 caseSensitive 表字段大小写是否敏感。 false 1.0.7 createTempTableMode 在使用copy merge/upsert时,创建临时表方式: AS:使用create temp table *** as select * from *** as方式创建,该方式支持表中带自增字段的使用,但性能略低。 LIKE:使用create temp table *** like方式创建,该方式不支持表中带自增字段。 AS 1.0.7 numberAsEpochMsForDatetime 如果数据库字段是时间类型(date\time\timestamp)并且数据源为数字类型,是否将源数据按毫秒时间戳转换为对应时间类型。 说明: 在copy入库场景该参数不生效。 在此版本前该参数为开启状态,且如果数据是数字类型字符串也将视为时间戳。 false 1.0.9 stringToDatetimeFormat 如果数据库字段是时间类型(date\time\timestamp)并且数据源为字符串类型,通过SimpleDateFormat按stringToDatetimeFormat格式转换为日期类型,然后通过日期中的时间戳构造数据库对应类型数据。 说明: 该参数配置即代表开启,如果不需要请勿配置。 null updateAll upsert时set字段是否包含主键。 true 1.0.10
  • 简介 dws-client是一款基于DWS JDBC实现的高性能、便捷入库工具,用户在使用时必须保证JDBC可以连接。其中使用dws-client入库具备如下优势: dws-client提供对缓存的空间、时间维度的限制,支持攒批提升入库性能,以满足业务在高峰低谷期的入库实时性。 攒批:在实时性要求不严格的场景,对单条数据操作进行缓存,待缓存至多条后批量操作,以提升写入性能。 支持并发入库。 内部实现多种高性能入库方式、主键冲突策略,满足各种场景入库需求。 API方式交互,低门槛使用。 图1 dws-client交互场景
  • 异常处理 异常可分为三类: InvalidException运行时异常不显示抛出,触发在请求参数无效时。 DwsClientException对所有异常的封装,包含被解析的code以及原始异常。 DwsClientRecordException对DwsClientException的扩展,包含写入异常的数据集合以及对应DwsClientException异常。 异常code对照: public enum ExceptionCode { /** * 无效参数 */ INVALID_CONFIG(1), /** * 连接异常 */ CONNECTION_ERROR(100), /** * 只读 */ READ_ONLY(101), /** * 超时 */ TIMEOUT(102), /** * 连接数过多 */ TOO_MANY_CONNECTIONS(103), /** * 加锁异常 */ LOCK_ERROR(104), /** * 认证失败 */ AUTH_FAIL(201), /** * 已经关闭 */ ALREADY_CLOSE(202), /** * 无权限 */ PERMISSION_DENY(203), SYNTAX_ERROR(204), /** * 内部异常 */ INTERNAL_ERROR(205), /** * 中断异常 */ INTERRUPTED(206), /** * 表未发现 */ TABLE_NOT_FOUND(207), CONSTRAINT_VIOLATION(208), DATA_TYPE_ERROR(209), DATA_VALUE_ERROR(210), /** * 解析不到的异常 */ UNKNOWN_ERROR(500); private final int code; }
  • 约束 表中的约束应用于多列。DSC支持以下约束: REFEREN CES 约束/FOREIGN KEY:目前无法通过工具迁移。 PRIMARY KEY约束:可通过工具迁移。 UNIQUE约束:可通过工具迁移。 输入:CREATE TABLE,使用CONSTRAINT 1 2 3 4 5 6 7 8 9 10 CREATE SET TABLE DP_SEDW.T_170UT_HOLDER_ACCT, NO FALLBACK, NO BEFORE JOURNAL, NO AFTER JOURNAL ( BUSINESSDATE VARCHAR(10) , SOURCESYSTEM VARCHAR(5) , UPLOADCODE VARCHAR(1) , HOLDER_NO VARCHAR(7) NOT NULL , POSTAL_ADD_4 VARCHAR(40) , EPF_IND CHAR(1) , CONSTRAINT uq_t_170ut_hldr UNIQUE ( SOURCESYSTEM, UPLOADCODE, HOLDER_NO ) ) PRIMARY INDEX ( HOLDER_NO, SOURCESYSTEM ) ; 输出: 1 2 3 4 5 6 7 8 9 10 CREATE TABLE DP_SEDW.T_170UT_HOLDER_ACCT ( BUSINESSDATE VARCHAR( 10 ) , SOURCESYSTEM VARCHAR( 5 ) , UPLOADCODE VARCHAR( 1 ) , HOLDER_NO VARCHAR( 7 ) NOT NULL , POSTAL_ADD_4 VARCHAR( 40 ) , EPF_IND CHAR( 1 ) , CONSTRAINT uq_t_170ut_hldr UNIQUE ( SOURCESYSTEM, UPLOADCODE, HOLDER_NO ) ) DISTRIBUTE BY HASH ( HOLDER_NO, SOURCESYSTEM ); 输入: 建表后,可使用ALTER语句为该表字段添加列级约束。 1 2 3 4 CREATE TABLE GCC_PLAN.T1033 ( ROLLOUT_PLAN_LINE_ID NUMBER NOT NULL, UDF_FIELD_VALUE_ID NUMBER NOT NULL) ; ALTER TABLE GCC_PLAN.T1033 ADD CONSTRAINT UDF_FIELD_VALUE_ID_PK UNIQUE (UDF_FIELD_VALUE_ID) ; 输出: 1 2 3 4 CREATE TABLE GCC_PLAN.T1033 ( ROLLOUT_PLAN_LINE_ID NUMBER NOT NULL, UDF_FIELD_VALUE_ID NUMBER NOT NULL, CONSTRAINT UDF_FIELD_VALUE_ID_PK UNIQUE (UDF_FIELD_VALUE_ID) ; 建表脚本中,需在所有列声明之后添加约束创建语法。 父主题: 表迁移
  • 定义索引 创建索引为可选操作。索引主要用于增强数据库性能。该操作建立指定表中指定列的索引,如需创建“唯一索引”,勾选该复选框。 在“访问方式”中选择要使用的索引方法名称。默认方法是B-tree。 索引的“填充因子”指索引方法填充索引页面的百分比。“访问方式”为B-trees时,初次建立索引以及在右侧扩展索引(填写新的最大键值)时,叶子页面填充到该百分比如果后续完全填满,页面将拆分,这样会导致索引效率逐步衰减。B-trees使用默认填充因子90,也可以选择10~100范围内的整数。如果为静态表,填充因子100,这样可以尽量减小索引的物理尺寸。对于更新量较大的表,推荐填充因子设置为较小值,这样可以尽量减少页面拆分的需求。其他索引方法使用的填充因子不同,但是比较类似。默认的填充因子随方法不同而不同。 可以直接提到索引的用户定义的表达式,也可以使用“可用列”创建索引在“可用列”列表中选择列,单击“添加”。如需多列索引,为其他列重复执行该步骤。 输入新增索引的所有信息后,单击“添加”按钮。 可单击“删除”删除清单中的索引定义完所有列后,单击“下一步”。 下表列出了“索引”中普通表所支持的字段/选项。 表5 支持的字段/选项 字段/选项 行存表 列存表 ORC表 唯一索引 √ x x btree √ √ x gin √ √ x gist √ √ x hash √ √ x psort √ √ x spgist √ √ x 填充因子 √ x x 用户自定义表达式 √ x x 部分索引 √ x x
  • 定义列 列定义了行中的信息单元,每一行为一个表项,每一列为应用于所有行的信息的分类。数据库添加表时,可以定义组成该数据库的列,列决定了表可以包含的数据类型。提供表的通用信息后,单击“列”页签定义列清单,每一列包含名称、数据类型和其他可选属性。 在“列名”区域填写列名称。“列名”指新表中待创建的列的名称,列名在表中唯一。 勾选“区分大小写”复选框可保留“列名”字段中输入的文本的大小写。例如,如果输入的表名称为“Name”,则表名将创建为“Name”。 选择“阵列维度”。“阵列维度”指列的阵列尺寸。 例如:如果某列的数组维度定义为integer [],该列数据会添加为单维数组。 上表的marks列创建为单维数据,subject列创建为二维数据。 从“数据类型”中选择列的数据类型。例如,为整数值选择“bigint”。 对于复杂的数据类型: 从“模式数据类型”中选择模式。 从“数据类型”中选择对应的数据类型。该列表显示所选模式的表和视图。 用户无法选择自定义数据类型。 在“精度/大小”字段选择所输入数据的类型。仅当数据类型可以用精度/尺寸来定义时,该选项可选。 在“范围”字段选择输入的数据类型的范围。 根据需要在“列约束”区域选择如下约束: “非空”:指该列不能包含空值。 “唯一”:指列可能仅包含唯一值。 “默认”:指定该列未定义值的情况下使用的默认值。 “检查”:指生成boolean结果的表达式,该结果中,新增行或更新行的操作需成功执行。 如果要在“创建普通表”对话框的“列”页签添加列注释信息,则在“设置列描述(最多5000个字符)”文本框中进行输入,之后单击“添加”。此外,也支持通过单独的新增列窗口添加注释信息。完成之后,可以在普通表的属性窗口中查看该信息。 输入新增列的所有信息后,单击“添加”按钮也可以从清单中删除列或修改列顺序,定义完所有列后,单击“下一步”。 支持对列进行添加、删除、编辑、调整顺序等操作。 下表列出了“列”中普通表支持的字段。 表2 支持的字段 字段 行存表 列存表 ORC表 阵列维度 √ x x 模式数据类型 √ x x 非空 √ √ √ 默认 √ √ √ 唯一 √ x x 检查 √ x x
  • 编辑连接 在“对象浏览器”窗格中,右键单击连接名称,然后选择“编辑连接”。弹出“编辑连接”对话框。 若要编辑活跃连接,需要先关闭该连接,然后重新打开设置了新属性的连接。工具会显示连接重置警告。 编辑连接参数。有关参数详情,请参见表1。 数据库类型和名称字段不支持修改。 单击“确定”保存更新后的连接信息。 可单击“清除”清除“编辑连接”对话框中的所有字段。 如果未修改任何连接参数就单击“确定”,会显示对话框,提示用户未保存更改。在修改连接参数后,会显示对话框消息。 如果未启用SSL,工具会显示“连接安全告警”对话框。单击“继续”以继续使用不安全的连接,或单击“取消”返回到“编辑连接”对话框并启用SSL。 如果勾选“不再显示”字段,当前登录的Data Studio实例在后续连接时,不再显示“连接安全告警”对话框。 工具会显示“确认删除连接”对话框,询问用户是否确认删除已编辑连接的数据库。 单击“是”继续更新连接信息,并重新连接到已更新参数的连接。 状态栏显示已完成操作的状态。
  • 刷新连接数据 在“对象浏览器”窗格中,右键单击连接名称并选择“刷新”,或按“F5”刷新数据库,刷新整个连接。在刷新的过程中,整个连接将更新为服务器上的最新内容。 状态栏显示已完成操作的状态。 完成刷新数据库所需时间完全取决于数据库中存在的对象数量。因此,建议在大规模数据库中尽量在空闲时间段执行此操作。 如果刷新整个数据库或连接,search_path中模式下的所有子对象和用户已展开的模式会重新加载。 如果重新连接数据库,仅会加载search_path中保存的模式对象。先前展开的对象不会加载。 不能同时刷新数据库及其下的多个对象。
  • 软件要求 操作系统要求 Data Studio的操作系统配置要求如下表所示。 表1 支持操作系统及相应软件包 服务器 操作系统 支持版本 通用x86服务器 Windows Windows 7 (64 bit) Windows 10 (64 bit) Windows 2012 (64 bit) Windows 2016 (64 bit) 浏览器要求 Data Studio的浏览器要求如下表所示。 操作系统 版本 Windows IE 11及以上 其他软件要求 Data Studio的软件配置要求如下表所示。 表2 Data Studio软件要求 软件 规格 Java 推荐与操作系统位数对应的Open JDK 1.8版本。 GNU libc 显示DDL,导入DDL,导出DDL和数据操作只支持GN系统libc 2.17以上的版本。 表3 支持的数据库版本 数据库 版本 GaussDB (DWS) 1.2.x 1.5.x 8.0.x 8.1.x 8.2.x 保证最佳体验的情况下,推荐的最小屏幕分辨率是1080 x 768。低于此分辨率,界面会异常。
  • 设置Java内存分配 DSC支持通过参数控制Java虚拟机(JVM)的内存分配量,并预设默认值。 在迁移操作期间,如果内存使用超过设置的值,DSC将提示“java.lang.OutOfMemoryError: GC overhead limit exceeded”错误消息并退出,此时用户可通过更改application.properties配置文件中的initialJVMMemory和maxJVMMemory 的值,以分配更多内存。 可用系统资源决定了内存分配量。 表2 JVM内存分配的控制参数 参数 说明 推荐取值 Xms 指定初始内存分配量,单位为MB。 该参数最小值为256 MB,最大值取决于可用的系统资源。 默认值:256 Xmx 指定内存分配量的上限,单位为MB。 该参数最小值为1024 MB,最大值取决于可用的系统资源。 默认值:1024 打开校验模块config文件夹下的gaussdb.properties文件,参照表3,配置参数以连接GaussDB(DWS)。 表3 gaussdb.properties文件内参数 参数名 描述 取值范围 默认值 样例 gaussdb-user GaussDB(DWS)数据库用户,拥有全部权限。 NA NA user1 gaussdb-port GaussDB(DWS)数据库端口号。 NA NA 8000 gaussdb-name GaussDB(DWS)的数据库名称。 NA NA gaussdb gaussdb-ip GaussDB(DWS)数据库IP地址。 NA NA 10.XX.XX.XX
  • 设置application.properties application.properties文件中包括一系列应用配置参数,用于控制DSC在迁移数据库脚本时的行为,该文件中的参数为通用控制参数,适用于Teradata、MySQL迁移。 设置方法如下。 打开config文件夹中的application.properties文件。 根据实际需要修改application.properties文件中参数的值。 application.properties文件中的参数解释见表1。 参数值不区分大小写。 除了列出的参数外,用户不得更改任何参数值。 保存后退出。
  • SQL历史记录 历史执行SQL脚本未加密。 “历史执行SQL”列表不显示包含如下关键字的敏感查询: Alter Role Alter User Create Role Create User Identified by Password 部分查询语法示例列举如下: ALTER USER name [ WITH ] option [ ... ]] CREATE USER name [ [ WITH ] option [ ... ] ] CREATE ROLE name [ [ WITH ] option [ ... ] ] ALTER ROLE name [ [ WITH ] option [ ... ] ]
  • 管理SQL终端连接 在Data Studio中,用户查看执行计划和成本、可视化计划解释以及在结果集中进行操作时,可重用SQL终端中的现有连接或新建连接。默认情况下,SQL终端会重用现有连接。当有多个查询在现有连接中排队等待执行时,请使用新连接,因为查询会按顺序执行且可能存在延迟。在处理临时表时请重用现有连接。有关编辑临时表的详情,请参阅编辑临时表。 要更改该设置,请执行以下步骤: 单击启用或禁用SQL终端中的连接重用功能。 有关重用连接和新建连接时的查询执行行为,请参阅FAQs。 用户仅能在已有连接中编辑临时表。 父主题: SQL终端管理
  • COMPRESS短语 该功能通过对COMPRESS设置,迁移过程中默认注释掉COMPRESS短语。 输入:COMPRESS短语 1 2 3 4 5 6 7 8 9 10 11 12 13 CREATE TABLE test_tab ( id NUMBER(10) NOT NULL, description VARCHAR2(100) NOT NULL, created_date DATE NOT NULL, created_by VARCHAR2(50) NOT NULL, updated_date DATE, updated_by VARCHAR2(50) ) NOCOMPRESS PARTITION BY RANGE (created_date) ( PARTITION test_tab_q1 VALUES LESS THAN (TO_DATE('01/04/2003', 'DD/MM/YYYY')) COMPRESS, PARTITION test_tab_q2 VALUES LESS THAN (MAXVALUE) ); 输出 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 CREATE TABLE test_tab ( id NUMBER (10) NOT NULL ,description VARCHAR2 (100) NOT NULL ,created_date DATE NOT NULL ,created_by VARCHAR2 (50) NOT NULL ,updated_date DATE ,updated_by VARCHAR2 (50) ) /*NOCOMPRESS*/ PARTITION BY RANGE (created_date) ( PARTITION test_tab_q1 VALUES LESS THAN ( TO_DATE( '01/04/2003' ,'DD/MM/YYYY' ) ) /*COMPRESS*/ ,PARTITION test_tab_q2 VALUES LESS THAN (MAXVALUE) ) ; 父主题: Oracle语法迁移
  • 导出当前页的查询结果 如要导出查询结果,建议导出所有查询结果,而非当前页的查询结果。“导出当前页到CSV”功能已弃用。 执行以下步骤导出当前页查询结果。 选择“结果”页签。 单击图标,导出当前页的查询结果。 显示“Data Studio安全免责声明”对话框。 选择“确定”。 选择保存当前页的路径。 可在状态栏查询导出页的状态。 单击“保存”。显示“数据导出成功”对话框。 单击“确定”。Data Studio在“消息”选项卡显示操作状态。 如果在导出结果时磁盘已满,则Data Studio会在“消息”选项卡中报错。清理磁盘,重新建立连接并导出结果数据。
  • 导出所有查询结果 在执行导出操作过程中,以下操作无法启动: 在“SQL终端”页签,执行SQL查询。 执行 PL/SQL语句。 调试 PL/SQL语句。 导出所有查询结果。 选择“结果”页签。 单击 ,显示“导出结果集数据”窗口。 请参见导出表数据完成导出操作。 可在状态栏查看结果的导出状态。 Data Studio显示“数据导出成功”对话框。 单击“确定”。“消息”页签显示已完成操作的状态。 如果在导出结果时磁盘已满,则Data Studio会在“消息”选项卡中报错。请清理磁盘,重新建立连接并导出结果数据。 “消息”页签显示“执行时间”、“导出的总行数”和CSV文件的保存路径。
  • 缩进/取消缩进行 缩进/取消缩进选项用于根据“首选项”页签中定义的缩进大小来移动行。 按照以下步骤在“PL/SQL Viewer”或“SQL终端”中缩进行: 选中目标行。 按下Tab键或单击。 根据“首选项”页签中定义的缩进大小来移动选中的行。可参见表1来修改缩进大小。 按照以下步骤在“PL/SQL Viewer”或“SQL终端”中取消缩进行: 选中目标行。 使用快捷键“Shift+Tab”或单击。 根据“首选项”页签中定义的缩进大小来移动选中的行。可参见表1来修改缩进大小。 如果选中了多行,则只对存在缩进的行取消缩进。例如,假设用户选择了多行,其中有一行从位置1开始。在这种场景下,使用“Shift+Tab”键将取消除该行以外所有行的缩进。
  • 使用模板 在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,打开事务。
  • CREATE TABLE Teradata的CREATE TABLE (缩写关键字为CT)语句用于创建表。 示例: 输入:CREATE TABLE 1 2 3 CT tab1 ( id INT ); 输出: 1 2 3 4 5 6 CREATE TABLE tab1 ( id INTEGER ) ; 执行CREATE tab2 AS tab1时,从tab1中复制的结构将用于创建表tab2。如果CREATE TABLE语句包含WITH DATA选项,则会将tab1的数据也复制到tab2中。使用CREATE AS时,源表中的CONSTRAINT行将保留在新表中。 如果session_mode设为Teradata,则必须删除目标表中的重复记录。该操作通过在迁移脚本中添加MINUS运算符实现。 如果session_mode设为ANSI,则允许目标表中存在重复记录。 如果源表具有PRIMARY KEY(主键)或UNIQUE CONSTRAINT(唯一约束),则该表不包含任何重复记录。在这种情况下,不需要添加MINUS操作符删除重复的记录。 示例: 输入:CREATE TABLE AS WITH DATA(session_mode=Teradata) 1 2 CREATE TABLE tab2 AS tab1 WITH DATA; 输出: 1 2 3 4 5 6 7 8 9 10 11 BEGIN CREATE TABLE tab2 ( LIKE tab1 INCLUDING ALL EXCLUDING PARTITION EXCLUDING RELOPTIONS ); INSERT INTO tab2 SELECT * FROM tab1 MINUS SELECT * FROM tab2; END ; / 输入:CREATE TABLE AS WITH DATA AND STATIS TICS 1 2 3 4 CREATE SET VOLATILE TABLE tab2025 AS ( SELECT * from tab2023 ) WITH DATA AND STATISTICS PRIMARY INDEX ( LOG TYPE, OPERSEQ); 输出: 1 2 3 4 5 CREATE LOCAL TEMPORARY TABLE tab2025 DISTRIBUTE BY HASH ( LOGTYPE, OPERSEQ ) AS ( SELECT * FROM tab2023 ); ANALYZE tab2025; 父主题: 表迁移
  • 图形化查看执行计划和开销 Visual Explain计划从扩展JSON格式中获取信息,以图形化方式显示SQL查询。该功能有助于优化查询以增强查询和服务器性能及分析数据库所用的查询路径,并找出最拥挤,开销最高和运行最慢的节点。 图形化执行计划展示了SQL语句所引用的表是如何被扫描的(普通顺序扫描和索引扫描)。 SQL语句的执行开销取决于其运行时长(可使用任意开销单位度量,但是通常以磁盘中每页的抓取数计算。) Costliest:“Self Cost”最高的计划节点。 Heaviest: 输出行数最大的计划节点被认为是最拥挤的计划节点。 Slowest:所需执行时间最长的计划节点。 按照以下步骤以图表形式查看所需SQL查询的计划和成本: 在“SQL终端”页签输入查询或使用现有查询,然后单击工具栏中的 。 显示“可视化计划分析”窗口。 如果在获取执行计划和开销的过程中丢失连接,请参见查看执行计划和开销获取关于重新连接选项的具体信息。 1 - “一般信息”:显示查询详情。 2 - “可视化解释计划”:以图形化方式显示所有节点,如开销最高、最拥挤的和最慢的计划节点。单击每个计划节点可查看节点详情。 3 - “属性 - 一般”:以毫秒为单位提供查询的执行时间。 4 - “属性 - 所有节点”:提供所有节点信息。 字段名 说明 Node Name 显示节点名称。 Analysis 显示各节点的分析信息。 RowsOutput 显示计划节点输出的行数。 RowsOutput Deviation (%) 显示预估的输出行数和计划节点实际的输出行数之间的偏差百分比。 Execution Time (ms) 显示查询在计划节点上的执行时间。 Contribution (%) 显示查询在计划节点上的执行时间占整个查询执行时间的百分比。 Self Cost 显示在计划节点上执行查询的“Total Cost”,即为所有子节点的总开销。 Total Cost 显示在计划节点上执行查询所消耗的总成本。 5 - “属性 - 执行计划”:显示所有节点上的执行信息。 列名 说明 节点名称 节点名称 实体名称 对象名称 开销 计划节点执行时间 行 计划节点输出行数 循环 每个节点执行的循环数 宽度 计划节点输出行的平均宽度估算值(以字节为单位) 实际行数 计划节点输出行数的估算值 实际时间 计划节点的实际执行时间 6 - “计划节点 - 一般”:显示各节点信息。 行名 描述 Output 显示计划节点返回的字段信息。 Analysis 显示开销最大、最慢和最拥挤的计划节点分析信息。 RowsOutput Deviation (%) 显示预估的输出行数和计划节点的实际输出行之间的偏差百分比。 Row Width (bytes) 显示预估的计划节点输出行的平均宽度(单位:字节)。 Plan Output Rows 显示计划节点输出的行数。 Actual Output Rows 显示预估的计划节点输出行数。 Actual Startup Time 计划节点生成第一条记录所耗费的执行时间。 Actual Total Time 显示计划节点的实际执行时间。 Actual Loops 显示该节点执行的迭代数。 Startup Cost 显示计划节点输出第一条记录所耗费的时间。 Total Cost 显示查询在计划节点上的执行时间。 Is Column Store 表示表的存储方式(列或行存储)。 Shared Hit Blocks 显示缓存命中的共享块数量。 Shared Read Blocks 显示从缓存读取的共享块数量。 Shared Dirtied Blocks 显示缓存中弄脏的共享块数量。 Shared Written Blocks 显示缓存写入的共享块数量。 Local Hit Blocks 显示缓存命中的局部块数量。 Local Read Blocks 显示从缓存读取的局部块数量。 Local Dirtied Blocks 显示缓存中弄脏的局部块数量。 Local Written Blocks 显示缓存写入的局部块数量。 Temp Read Blocks 显示从缓存读取的临时块数量。 Temp Written Blocks 显示缓存写入的临时块数量。 I/O Read Time (ms) 显示该节点执行任意I/O读操作的耗时。 I/O Write Time (ms) 显示该节点执行任意I/O写操作的耗时。 Node Type 显示计划节点的类型。 Parent Relationship 显示与父节点的关系。 Inner Node Name 子节点名称 Node/s 无需输入,将从属性中移除。 根据计划节点类型可以显示其他信息。举例如下: 计划节点 其他 Partitioned CStore Scan 表名、表别名和模式名 Vector Sort 排序键 Vector Hash Aggregate 分组键 Vector Has Join Join类型和Hash条件 Vector Streaming 分布键和Spawn On 7 - “计划节点 - DN详情”:为每个节点提供详细的DN信息。只有在从DN收集数据时,“DN详情”才可用。 有关复制和搜索工具栏选项的说明,请参阅查看数据。 父主题: SQL终端管理
  • 查看执行计划和开销 执行计划显示如何对指代SQL语句的表格进行扫描,分为次序扫描和索引扫描。 SQL语句执行成本为预估的查询时间(查询的语句成本单位是随机的,通常情况下检查对象为磁盘页)。 查看SQL查询的计划和成本,可通过以下方式: 在“SQL终端”中输入查询或使用已有查询,单击工具栏的来查看解释计划。 若要查看使用了Analyze的解释计划,单击查询按钮,选择“包含ANALYZE结果”。然后再次单击查询。 “执行计划”默认在底部的新页签以树形图样式显示。显示支持树形样式和文本样式。 树形执行计划和Visual Explain中显示的数据可能会有所不同,因为二者执行的参数不同。 下表展示了使用和未使用Analyze解释计划时所选择的参数和显示的列: 表1 解释计划选项 解释计划类型 参数 列 未选择“包含ANALYZE结果”(默认值) Verbose、Costs Node type、startup cost、total cost、rows、width、additional Info 选择“包含ANALYZE结果” Analyze、Verbose、Costs、Buffers、Timing Node type、startup cost、total cost、rows、width、Actual startup time、Actual total time、Actual Rows、Actual loops、Additional Info Additional Info列包括谓词信息(过滤谓词和hash条件)、分布键、输出信息以及节点类型信息。 树形样式将节点划分为16个类型。在树形样式中,每个节点都将以相应类型的图标开头。下表列举了节点类别及相应图标。 表2 节点类别和图标 节点类别 图标 Aggregate Group Aggregate Function Hash Hash Join Nested Loop Nested Loop Join Modify Table Partition Iterator Row Adapter Seq Scan on Set Operator Sort Stream Union Unknown 将鼠标悬停在突出显示的单元格上,可以识别负载最重、开销最大、速度最慢的节点。只有树形样式支持单元格突出显示。 若选择了多个查询,则仅针对最后一个查询显示使用/未使用Analyze的解释计划。 每次执行一个执行计划,该计划都会在新页签中打开。 如果丢失连接但对象浏览器中依然保持数据库的连接,会弹出“连接错误”对话框,显示以下内容: “是”:重建连接,获取查询计划及开销。 “否”:断开对象浏览器中的数据库连接。 “执行计划”窗口中的工具栏菜单选项如下: 工具栏菜单 图标 描述 树形样式 此图标用于以树形样式查看解释计划。 文本样式 此图标用于以文本样式查看解释计划。 复制 此图标用于将所选内容从结果窗口复制到剪贴板,支持快捷键Ctrl+C。 保存 此图标用于以文本样式保存解释计划。 有关刷新、SQL预览和搜索栏的具体信息,请参见执行SQL查询。 刷新之后会重新执行Explain/Analyze查询并刷新当前页签显示的计划内容。 结果显示在“消息”页签中。 父主题: SQL终端管理
  • 迁移后验证 Database Schema Convertor转换完含有SQL语句的源文件后,在目标GaussDB(DWS)上执行转换后的文件,并生成文件执行成功和失败的明细报告。 Database Schema Convertor完成迁移后,会调用迁移后验证脚本(通过配置项控制)。此验证脚本(配置详情见配置文件)会连接到目标 GaussDB数据库 并执行。 迁移后验证脚本会连接到目标GaussDB数据库(具体信息在配置文件中配置),并执行该脚本。 配置config文件夹下的application.properties 在GaussDB中执行迁移脚本的取值范围:true/false,默认值:false。 将executesqlingauss设置为true。 true: executesqlingauss将在GaussDB上执行迁移脚本。 配置config文件夹下的gaussdb.properties #目标数据库配置 #gauss database user with all privileges gaussdb-user= gaussdb-port= #Database name for GaussDBA gaussdb-name= #gaussdb ip gaussdb-ip= gsql客户端的依赖关系: 由于在GaussDB上执行脚本时需依赖gsql(GaussDB(DWS)),为保证Database Schema Convertor正常运行,需在安装了GaussDB实例或客户端(gsql)的节点上运行Database Schema Convertor,且进行验证的用户具有执行gsql命令的权限。 由于Gauss数据库实例/客户端只能安装在Linux操作系统中,因此只能用于Linux环境下的功能验证。 在远程GaussDB实例上执行gsql命令,建议在GaussDB实例的如下配置文件中增加客户端系统IP或主机名。 /home/gsmig/database/coordinator ---pg_hba.conf 回显 GaussDB(DWS) ********************** Verification Started ****************************** Sql script execution on Gauss DB start time : Wed Jan 22 17:27:07 CST 2020 Sql script execution on Gauss DB end time : Wed Jan 22 17:27:44 CST 2020 Summary of Verification : ================================================================================================================================== Statement | Total | Passed | Failed | Success Rate(%) ----------------------------------------------------------------------------------------------------------------------------------- COMMENT | 15 | 15 | 0 | 100 CREATE VIEW | 4 | 3 | 1 | 75 CREATE INDEX | 4 | 3 | 1 | 75 CREATE TABLE | 6 | 6 | 0 | 100 ALTER TABLE | 3 | 3 | 0 | 100 --------------------------------------------------------------------------------------------------------------------------------- Total | 32 | 30 | 2 | 93 Gauss Execution Log file : /home/gsmig/18Jan/DSC/DSC/log/gaussexecutionlog.log Gauss Execution Error Log file : /home/gsmig/18Jan/DSC/DSC/log/gaussexecutionerror.log Verification finished in 38 seconds ********************** Verification Completed ****************************
  • .LABEL 和 .GOTO Teradata命令.LABEL用于创建标签,通常与.GOTO配对使用。.GOTO会跳过所有中间的BTEQ命令和SQL语句,指导到达指定标签位置,执行相应的恢复处理。 gsql元命令\goto LABEL ... \label LABEL可以等价实现无条件跳转。 输入 输出 .IF CHECK_PK='' THEN .GOTO NOCHECK ${CHECK_PK}; .LABEL NOCHECK .QUIT 0 \if ${CHECK_PK} == '' \goto NOCHECK \endif ${CHECK_PK} \label NOCHECK \q 0
  • 表达式 将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; /
共100000条