华为云用户手册

  • PG_INHERITS PG_INHERITS系统表记录关于表继承层次的信息。数据库里每个直接的子系表都有一条记录。间接的继承可以通过追溯记录链来判断。 表1 PG_INHERITS字段 名字 类型 引用 描述 inhrelid oid PG_CLASS.oid 子表的OID。 inhparent oid PG_CLASS.oid 父表的OID。 inhseqno integer - 如果一个子表存在多个直系父表(多重继承),这个数字表示此继承字段的排列顺序。计数从1开始。 父主题: 系统表
  • 创建包模式 包声明迁移为创建以包名命名的模式。设置pkgSchemaNaming=false后,可以进行迁移。 输入:为包创建模式名 1 2 3 4 5 6 7 8 9 CREATE OR REPLACE EDITIONABLE PACKAGE "PACK_DEMO"."PACKAGE_GET_NOVA_INFO" AS TYPE novalistcur is REF CURSOR; PROCEDURE getNovaInfo ( i_appEnShortName IN VARCHAR2, o_flag OUT VARCHAR2, o_errormsg OUT VARCHAR2, o_novalist OUT novalistcur ); 输出 1 2 3 4 /*~~PACKAGE_GET_NOVA_INFO~~*/ CREATE SCHEMA PACKAGE_GET_NOVA_INFO ; 父主题: PL/SQL包
  • 调试函数/过程 断点用于暂停其所在行中的PL/SQL程序的执行,可用断点控制执行并调试过程。设置并启用断点后,PL/SQL程序会在该断点所在的行停止执行,此时用户可以进行其他调试操作。 设置或添加断点 Data Studio支持为某行设置或创建断点。 打开需要添加断点的函数/过程,双击行号字段左侧的断点标尺,设置断点,断点标志启用表示操作成功。如果函数在调试过程中不会间断或停止执行,则为其设置的断点未生效。 使用“断点”窗格 在“断点”窗格中可查看和管理已有断点。可从最小化窗口窗格中单击断点按钮打开“断点”窗格。 在“断点”窗格中,勾选断点复选框,单击“启用”、“禁用”或“移除”按钮,进行断点启用、禁用或者删除操作。也可双击行号字段左侧的断点标尺设置断点;双击断点图标,将断点删除。 在“PL/SQL Viewer”窗格,双击所需断点信息行,定位该断点。 “断点”窗格会列出每一个断点所在行的行号以及调试对象的名称。 禁用断点后,程序不会在该断点处暂停执行,但该断点仍会保留(以备将来启用)。 删除的断点无法恢复。 按下“Alt+Y”可复制“断点”窗格内容。 修改源代码 调试过程中,如果用户修改了从服务器获取的源代码,并继续进行调试,Data Studio会提示错误:建议刷新该对象,再次执行调试操作。 如果用户修改了从服务器获取的源代码,且在未设置断点的情况下执行或调试了该代码,Data Studio会显示服务器中源代码的执行结果。建议在进行调试或者执行前,进行刷新操作。 使用断点调试函数/过程 在要调试的行创建断点后,单击“调试”按钮或在“对象浏览器”中右键单击函数,选择“调试”。在弹出的“调试函数/过程”对话框中,输入参数信息。 如果没有输入参数,则“调试函数/过程”对话框不会弹出。 对于varchar和date数据类型,参数值需加半角单引号(');对于numeric数据类型,参数值可以不加半角单引号。要将参数值设为NULL,需输入NULL或null。 调试或执行函数或过程期间,相同参数的值会在下次操作中被直接使用。首次执行时,参数值为空,可根据需要输入参数值。单击“确定”,参数值将被缓存。下次查询时,执行/调试期间会显示上次缓存的相同参数的值。某一连接被删除后,缓存的所有参数值都会被清除。 调试过程中“调用堆栈”窗格会填充信息。 “变量”窗格显示当前的变量值。将鼠标悬停在函数/过程中的变量上,也会显示当前的变量值。“变量”窗格默认显示系统变量。必要时,用户可以屏蔽系统变量。按钮默认开启,即默认启用系统变量。 设置/展示变量 说明 设置NULL值 在“变量”窗格中双击一个变量值。 弹出对话框。 设置值为空。 设置字符串值 设置字符串值如下: 要设置为abc,则输入abc。 要设置为Master's Degree,则输入Master''s Degree。 要将变量设置为文本(NULL),在“变量”窗格中设置NULL。 设置Boolean值 Boolean值t或f上加单引号。将t设成一个boolean变量,则在Variable窗格中输入't'。 显示变量值 如果变量值是NULL文本,则显示为NULL。 如果变量值是NULL,则显示为空。 如果变量值为字符串,比如abc,则显示为abc。 调试函数/过程期间,在编辑器中右键单击变量,可将变量添加至“监视器”窗格。如果变量处于被监控状态,“监视器”窗格中的值会随“变量”窗格中值的变化而变。 在Data Studio中调试PL/SQl函数期间,将光标放在变量上方,则会显示该变量的信息。 终止调试 在工具栏中单击“终止调试”按钮或在“调试”菜单中选择“终端调试”。调试完成后,函数会继续正常执行,不会在任何断点暂停。 调试完成后,“结果”页签中显示函数执行结果,“调用堆栈”和“变量”窗格将被清除。 Data Studio支持在调试完成后,提交/回滚查询结果。右键单击执行函数的终端窗格,勾选“使用回滚进行调试”启用回滚功能。 如果启用了“使用回滚进行调试”选项,则调试后获取的函数执行结果不会保存在数据库中。 如果禁用了“使用回滚进行调试”选项,则调试后获取的函数执行结果被提交到数据库中。
  • 导出函数/过程DDL 可通过右键单击“导出DDL”导出该函数/过程定义。 在“对象浏览器”窗格中,右键单击所选函数/过程,选择“导出DDL”。 用户需自定义导出路径。如果需要将数据压缩,勾选“.zip”选项。 “Data Studio安全免责声明”必须勾选“我同意”才可以单击“确定”。用户可关闭安全免责声明,关闭后导出DDL时将不会再出现,详情请参见表1。 单击“确定”,右下角的状态栏会显示操作进度。 如果文件名包含Windows中文件名不支持的字符,则文件名的名称会与模式名称不同。 要执行该操作,需要MS Visual C Runtime文件(msvcrt100.dll)。详情请参阅故障处理。 “导出完成”对话框和状态栏显示已完成操作的状态。 表1 支持导出DDL的编码格式 数据库编码 文件编码 支持导出DDL UTF-8 UTF-8 是 GBK 是 LATIN1 是 GBK GBK 是 UTF-8 是 LATIN1 否 LATIN1 LATIN1 是 GBK 否 UTF-8 是
  • 编辑函数/过程 在“对象浏览器”中双击所需过程/函数或SQL函数,或右键单击函数/过程或SQL函数并选择“查看源”。 “PL/SQL Viewer”页签显示所选函数/过程或SQL函数。 用户必须刷新“对象浏览器”才能查看最新DDL。 拥有相同模式、名称和输入参数的函数/过程或SQL函数一次只能打开一个。 编辑或更新后,可以编译并执行该PL/SQL程序或SQL函数。 在编译前若执行函数/过程或SQL函数,会显示一条“改变源代码”的提示。 单击“是”,编译并执行PL/SQL函数/过程。“消息”对话框显示已完成操作的状态。 编译函数/过程或SQL函数后,刷新“对象浏览器”(按下“F5”)查看更新后信息。
  • 控制执行 单步调试PL/SQL函数 调试执行函数时,可使用工具栏中的单步调试命令。通过进行单步控制,可逐行调试程序。如果进行单步操作时遇到断点,则该单步操作会停止,程序也会暂停执行。 “单步”是指一次执行一条语句。单步执行一条语句后,可以在其他调试窗口中查看执行结果。 一次最多可以弹出100个“PL/SQL Viewer”页签。如果打开的页签超过100个,则调用函数页签关闭。例如,如果已打开100个页签,且调试对象调用了新调试对象,则Data Studio会关闭调用函数并打开新的调试对象。 单步进入 在“调试”菜单中选择单步进入,可以逐条语句执行代码。 当单步跳入一个函数,Data Studio执行当前语句,然后进入调试模式,调试位置由左侧标尺区域中的箭头表示。如果执行语句调用另一个函数,Data Studio将单步跳入该函数。一旦函数中的所有语句执行完成,Data Studio将跳回其调用函数的下一语句。 单步进入(F7),进入下一语句如果按“继续”,PL/SQL代码执行将继续。 单步跳过 单步跳过与单步进入相同,除非调用了另一个函数,否则不会跳入该函数。该函数将运行,进入当前函数中的下一个语句。F8是单步跳过的快捷键。如果该调用函数内设置了断点,单步跳过将进入该函数,并命中该断点。 单步退出 子程序单步退出,继续该函数的执行,在该过程返回其调用函数后,暂停执行,确定该函数的剩余部分无需调试后,可单步退出该段函数。然而,如果该函数其余部分设置了断点,在返回调用函数前,该断点将被命中。 单步跳过和单步退出过程都会执行函数。单步退出操作的快捷键是“Shift+F7”。 继续执行 调试进程在某一位置停止时,可在“调试”菜单中选择“继续”(F9)继续PL/SQL函数执行。 查看调用堆栈 “调用堆栈”窗格展示调用过程时的过程链。可从最小化窗口窗格中打开“调用堆栈”窗格。最近的过程在顶部,最早的在底部,每个程序名的末尾是该过程的当前行号。 双击“调用堆栈”窗格中的函数名,通过“调用堆栈”窗格在多个函数中导航。
  • 创建函数/过程 在“对象浏览器”窗格中,右键单击待创建PL/SQL过程的指定模式下的“函数/过程”,按照要求选择“创建函数”、“创建SQL函数”、“创建过程”或“创建C函数”。 例如右键单击“函数/过程”,弹出如下菜单: Data Studio在新页签中显示所选模板。 完成添加函数/过程后,可选择“编译”按钮或在页签空白处右键单击选在“编辑”选项编译该函数/过程。 编译运行成功后会在“对象浏览器”中显示新函数/过程。 过程名称旁的星号(*),表示该过程不被编译或添加到“对象浏览器”。 刷新(按下“F5”)后,“对象浏览器”中会显示新添加的调试对象。 C函数不支持调试操作。 弹出消息显示已完成操作的状态。状态栏将不显示此操作的状态。
  • PG_STATIO_USER_SEQUENCES PG_STATIO_USER_SEQUENCES视图显示命名空间中所有用户关系表类型为序列的IO状态信息。 表1 PG_STATIO_USER_SEQUENCES字段 名称 类型 描述 relid oid 序列OID。 schemaname name 序列中模式名。 relname name 序列名。 blks_read bigint 从序列中读取的磁盘块数。 blks_hit bigint 序列中缓存命中数。 父主题: 系统视图
  • transaction_deferrable 参数说明:指定是否允许一个只读串行事务延迟执行,使其不会执行失败。该参数设置为on时,当一个只读事务发现读取的元组正在被其他事务修改,则延迟该只读事务直到其他事务修改完成。目前,GaussDB(DWS)暂时未用到这个参数。与该参数类似的还有一个default_transaction_deferrable,设置它来指定一个事务是否允许延迟。 参数类型:USERSET 取值范围:布尔型 on表示允许执行。 off表示不允许执行。 默认值:off
  • transaction_isolation 参数说明:设置当前事务的隔离级别。 参数类型:USERSET 取值范围: read committed:读已提交隔离级别,只能读到已经提交的数据,而不会读到未提交的数据。这是缺省值。 read uncommitted:读未提交隔离级别,GaussDB(DWS)不支持read uncommitted,如果设置了read uncommitted,实际上使用的是read committed。 repeatable read:可重复读隔离级别,仅仅能看到事务开始之前提交的数据,不能看到未提交的数据,以及在事务执行期间由其它并发事务提交的修改。 serializable:事务可序列化,GaussDB(DWS)不支持SERIALIZABLE,如果设置了serializable,实际上使用的是repeatable read。 默认值:read committed
  • 索引 在GaussDB(DWS)中创建索引期间,索引名不能与模式名一起指定。该索引将在创建索引表的模式中自动创建。 图1 输入:索引 图2 输出:索引 输入:基于CASE函数的索引 函数索引是基于列函数或表达式计算结果创建的索引。 输入 1 2 3 4 5 6 7 8 9 CREATE UNIQUE index GCC_RSRC_ASSIGN_U1 ON GCC_PLAN.GCC_RSRC_ASSIGN_T ( (CASE WHEN( ENABLE_FLAG = 'Y' AND ASSIGN_TYPE = '13' AND WORK_ORDER_ID IS NOT NULL ) THEN WORK_ORDER_ID ELSE NULL END) ) ; 需要将表达式或函数放在()里。 输入:基于DECODE函数的索引 1 2 3 4 5 6 7 8 9 CREATE UNIQUE index GCC_PLAN_N2 ON GCC_PLAN.GCC_PLAN_T ( DECODE ( ENABLE_FLAG ,'Y' ,BUSINESS_ID ,NULL ) ) ; 输出 1 2 3 4 5 6 7 8 9 CREATE UNIQUE index GCC_PLAN_N2 ON GCC_PLAN.GCC_PLAN_T ( (DECODE ( ENABLE_FLAG ,'Y' ,BUSINESS_ID ,NULL )) ) ; 需要将表达式或函数放在()里。 ORA_HASH ORA_HASH函数用于计算给定表达式或列的哈希值。如果在CREATE INDEX中为列指定了此函数,则此函数将被删除。 输入 1 CREATE INDEX SD_WO.WO_WORK_ORDER_T_N3 on SD_WO.WO_WORK_ORDER_T (PROJECT_NUMBER, ORA_HASH(WORK_ORDER_NAME)); 输出 1 2 3 4 5 6 CREATE index WO_WORK_ORDER_T_N3 ON SD_WO.WO_WORK_ORDER_T ( PROJECT_NUMBER ,ORA_HASH( WORK_ORDER_NAME ) ) ; DECODE 如果在CREATE INDEX语句中给列加上DECODE函数,则上报syntax error at or near 'DECODE' (Script - gcc_plan_t.SQL)错误。 输入 1 CREATE UNIQUE index GCC_PLAN.GCC_PLAN_N2 on GCC_PLAN.GCC_PLAN_T (DECODE(ENABLE_FLAG,'Y',BUSINESS_ID,NULL)); 输出 1 2 3 4 5 6 7 8 9 10 CREATE UNIQUE index GCC_PLAN_N2 ON GCC_PLAN.GCC_PLAN_T ( DECODE ( ENABLE_FLAG ,'Y' ,BUSINESS_ID ,NULL ) ) ; CASE语句 CREATE INDEX中不支持CASE语句。 输入 1 2 3 4 5 6 7 8 9 CREATE UNIQUE index GCC_RSRC_ASSIGN_U1 ON GCC_PLAN.GCC_RSRC_ASSIGN_T ( (CASE WHEN( ENABLE_FLAG = 'Y' AND ASSIGN_TYPE = '13' AND WORK_ORDER_ID IS NOT NULL ) THEN WORK_ORDER_ID ELSE NULL END) ) ; 输出 1 2 3 4 5 6 7 CREATE UNIQUE INDEX gcc_rsrc_assign_u1 ON gcc_plan.gcc_rsrc_assign_t ( (( CASE WHEN( enable_flag = 'Y' AND assign_type = '13' AND work_order_id IS NOT NULL ) THEN work_order_id ELSE NULL END )) ); 父主题: 模式对象
  • MODIFY修改列 MySQL使用 MODIFY关键字修改列数据类型、设置非空约束。DSC工具迁移时会根据GaussDB(DWS)的特性进行相应适配。 输入示例 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 CREATE TABLE IF NOT EXISTS `runoob_alter_test`( `dataType0` varchar(100), `dataType1` bigint, `dataType2` bigint, `dataType3` bigint )ENGINE=InnoDB DEFAULT CHARSET=utf8; ## A. ALTER TABLE runoob_alter_test MODIFY dataType1 smallint; ## B. ALTER TABLE runoob_alter_test MODIFY dataType1 smallint NOT NULL; ## C. ALTER TABLE runoob_alter_test MODIFY dataType1 smallint NOT NULL FIRST; ## D. ALTER TABLE runoob_alter_test MODIFY dataType1 smallint NOT NULL AFTER dataType3; 输出示例 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 CREATE TABLE "public"."runoob_alter_test" ( "datatype0" VARCHAR(400), "datatype1" BIGINT, "datatype2" BIGINT, "datatype3" BIGINT ) WITH ( ORIENTATION = ROW, COMPRESSION = NO ) NOCOMPRESS DISTRIBUTE BY HASH ("datatype0"); -- A. ALTER TABLE "public"."runoob_alter_test" MODIFY "datatype1" SMALLINT NULL DEFAULT NULL; -- B. ALTER TABLE "public"."runoob_alter_test" MODIFY "datatype1" SMALLINT NOT NULL; -- C. ALTER TABLE "public"."runoob_alter_test" MODIFY "datatype1" SMALLINT NOT NULL; -- D. ALTER TABLE "public"."runoob_alter_test" MODIFY "datatype1" SMALLINT NOT NULL; 父主题: 表(可选参数、操作)
  • 常见问题处理 Server common name "xxxx" does not match host name "xxxxx" 此问题的原因是使用了SSL加密的“verify-full”选项,这时驱动程序会验证证书中的主机名与实际部署数据库的主机名是否一致。碰到此问题可以使用“verify-ca”选项,不再校验主机名;或者重新生成一套与数据库所在主机名相同的CA证书。 connect to server failed: no such file or directory 此问题可能的原因: 配置了错误的/不可达的数据库地址,或者端口 请检查数据源配置中的Servername及Port配置项。 服务器监听不正确 如果确认Servername及Port配置正确,请根据“操作步骤”中数据库服务器的相关配置,确保数据库监听了合适的网卡及端口。 防火墙及网闸设备 请确认防火墙设置,将数据库的通信端口添加到可信端口中。 如果有网闸设备,请确认相关的设置。 在指定的DSN中,驱动程序和应用程序之间的体系结构不匹配 此问题可能的原因:在64位程序中使用了32位驱动,或者相反。 C:\Windows\SysWOW64\odbcad32.exe:这是32位ODBC驱动管理器。 C:\Windows\System32\odbcad32.exe:这是64位ODBC驱动管理器。 The password-stored method is not supported. 此问题可能原因: 数据源中未配置sslmode配置项,请调整此项至allow或以上级别,允许SSL连接,此选项的更多说明,请见表1。 authentication method 10 not supported. 使用开源客户端碰到此问题,可能原因: 数据库中存储的口令校验只存储了SHA256格式哈希,而开源客户端只识别MD5校验,双方校验方法不匹配报错。 数据库并不存储用户口令,只存储用户口令的哈希码。 早期版本(V100R002C80SPC300之前的版本)的数据库只存储了SHA256格式的哈希,并未存储MD5的哈希,所以无法使用MD5做用户口令校验。 新版本(V100R002C80SPC300及之后版本)的数据库当用户更新用户口令或者新建用户时,会同时存储两种格式的哈希码,这时将兼容开源的认证协议。 但是当老版本升级到新版本时,由于哈希的不可逆性,所以数据库无法还原用户口令,进而生成新格式的哈希,所以仍然只保留了SHA256格式的哈希,导致仍然无法使用MD5做口令认证。 要解决该问题,参见以下操作: 将数据库参数password_encryption_type修改为1,修改方法参见修改数据库参数。 新建一个数据库用户用于连接,或者重置准备使用的数据库用户的密码。 如果您使用的是管理员账号,参见重置密码。 如果是普通用户,可以先通过其他客户端工具(例如Data Studio)连接数据库后,使用ALTER USER语句来修改密码。 再尝试连接数据库。 unsupported frontend protocol 3.51: server supports 1.0 to 3.0 目标数据库版本过低,或者目标数据库为开源数据库。请使用对应版本的数据库驱动连接目标数据库。 FATAL: GSS authentication method is not allowed because XXXX user password is not disabled. 或:GSSAPI authentication not supported. 目标CN的pg_hba.conf里配置了当前客户端IP使用“gss”方式来做认证,该认证算法不支持用作客户端的身份认证,请修改到“sha256”后再试。 同时请注意,数据库当前不支持在集群内跨节点连接数据库,如果是在集群内跨节点连接CN出现此问题,请将业务程序调整到集群外后重试。
  • FOREIGN_KEY_CHECKS MySQL中的外键约束,GaussDB(DWS)不支持该属性修改表定义信息,DSC迁移时会将该属性删除。 输入示例 1 2 3 4 5 6 SET foreign_key_checks = 0; CREATE TABLE mall_order_dc ( id bigint NOT NULL AUTO_INCREMENT, order_id varchar(50) NOT NULL, key order_id(order_id) ); 输出示例 1 2 3 4 5 CREATE TABLE "public"."mall_order_dc" ( "id" BIGSERIAL NOT NULL, "order_id" VARCHAR(200) NOT NULL ) WITH (ORIENTATION = ROW, COMPRESSION = NO) NOCOMPRESS DISTRIBUTE BY HASH ("id"); CREATE INDEX "order_id" ON "public"."mall_order_dc" USING BTREE ("order_id"); 父主题: 表(可选参数、操作)
  • IGNORE MySQL INSERT语句如果使用IGNORE修饰符,则执行INSERT语句时发生的错误将被忽略。 输入示例 1 2 3 4 5 6 7 8 9 10 # 如果表中已经存在相同的记录,则忽略当前新数据 INSERT IGNORE INTO exmp_tb2 VALUES(189, '189.23','nice','2017-11-12'); INSERT IGNORE INTO exmp_tb2 VALUES(130,'189.23','nice','2017-11-12'); INSERT IGNORE INTO exmp_tb2 VALUES(120,15.68,'good','2018-11-12'); INSERT IGNORE INTO exmp_tb2 VALUES(DEFAULT,128.23,'nice','2018-10-11'); INSERT IGNORE INTO exmp_tb2 VALUES(DEFAULT,DEFAULT,'nice','2018-12-14'); INSERT IGNORE INTO exmp_tb2 VALUES(DEFAULT,DEFAULT,'nice',DEFAULT); INSERT IGNORE INTO exmp_tb2 (tb2_id,tb2_price) VALUES(DEFAULT,DEFAULT); INSERT IGNORE INTO exmp_tb2 (tb2_id,tb2_price,tb2_note) VALUES(DEFAULT,DEFAULT,DEFAULT); INSERT IGNORE 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 10 -- 如果表中已经存在相同的记录,则忽略当前新数据 INSERT INTO "public"."exmp_tb2" VALUES (101,'189.23','nice','2017-11-12'); INSERT INTO "public"."exmp_tb2" VALUES (130,'189.23','nice','2017-11-12'); INSERT INTO "public"."exmp_tb2" VALUES (120,15.68,'good','2018-11-12'); 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","tb2_date") VALUES (DEFAULT,DEFAULT,DEFAULT,DEFAULT); 父主题: INSERT
  • PG_SECLABELS PG_SECLABELS视图提供关于安全标签的信息。 表1 PG_SECLABELS字段 名字 类型 引用 描述 objoid oid 任意OID属性 安全标签所属的对象的OID。 classoid oid PG_CLASS.oid 此对象的系统表的OID。 objsubid integer - 对于某个在表字段上的安全标签,为字段编号(引用表本身的objoid和classoid)。对于所有其他对象类型,该字段为0。 objtype text - 标签出现的对象的类型。 objnamespace oid PG_NAMESPACE.oid 对象的命名空间的OID,如果适用;否则为NULL。 objname text - 标签适用的对象名。 provider text PG_SECLABEL.provider 与标签相关的标签提供者。 label text PG_SECLABEL.label 应用于此对象的安全标签。 父主题: 系统视图
  • 查看表属性 右键单击表,选择“属性”查看表属性。 Data Studio在不同页签显示所选表的属性(“一般”、“列”、“约束”和“索引”)。可在每个页签上对指定对象进行编辑,可双击单元格执行编辑操作。 查看表格数据时,Data Studio会自动调整列宽以获得表视图。用户可以根据需要调整列的大小。如果单元格的文本内容超出了可用的显示区域,则调整单元格列的大小可能会导致DS无法响应。 一个表显示一个属性窗口。 如果一个已打开的表格的属性被修改,刷新并重新打开该表格的属性查看更新后的表格属性信息。 如果列的内容包含空格,会在空格处自动断行以适应该列的显示区域。不包含空格的内容不会自动断行。 列的大小取决于内容最长的列的长度。 刷新“属性”页签后,将显示在“对象浏览器”对表属性所做的任何更改。 “Data Type”列不允许粘贴操作。
  • 查看数据 右键单击表,选择“查看数据”查看表数据。Data Studio显示“查看数据”页签,可在该页签查看表数据信息。 “查看数据”页签的工具栏菜单: 工具栏名称 说明 复制 用于从“查看数据”页签将数据复制。快捷键为Ctrl+C。 高级复制 用于将结果窗口中的内容复制。可以复制结果以包含行号和/或列标题。请参阅表1以设置此首选项。快捷键为Ctrl+Shift+C。 显示/隐藏搜索栏 用于显示/隐藏搜索文本区域。单击该按钮可在两种状态间切换。 编码 有关如何选择编码,请参见执行SQL查询。 搜索区域中的图标: 图标名称 描述 搜索 用于根据定义的标准,搜索显示的表数据。搜索内容不区分大小写。 清空搜索内容 用于清空在搜索字段中输入的搜索内容。 有关调整列位置或对列进行排序的具体信息,请参阅执行SQL查询。 “查询提交时间”:提供查询的提交时间。 获取的行数和执行时间同时显示,且会显示默认行数。如果有其他记录待获取,此图标将显示为“更多”。用户可将光标滚至表底部读取并显示所有行。 查看表数据时,Data Studio会自动调整列宽。用户可以根据需要调整列的大小。如果单元格的文本内容超出了可用的显示区域,则调整单元格列的大小可能会导致Data Studio无法响应。 表的单元格最多可显示1000个字符,超出部分显示为“...”。 一个表显示一个表数据窗口。 如果已打开的表数据被修改了,刷新并重新打开该表数据并在同一打开的窗口查看更新后的表数据。 数据在加载过程中,表格下方会出现一条“读取中”的消息。 如果列的内容包含空格,会在空格处自动断行以适应该列的显示区域。不包含空格的内容不会自动断行。 要复制单元格中的部分内容,先选中所需部分,然后按下“Ctrl+C”。 列的大小取决于内容最长的列的长度。
  • 编辑表数据 右键单击表,选择“编辑数据”。页面显示“编辑表数据”页签。 有关复制、搜索工具栏和字符编码下拉列表选项的说明,请参阅查看数据。 Data Studio仅识别单元格中的如下数据类型:Bigint、bit、Boolean、char、date、decimal、double、float、integer、numeric、real、smallint、tinyint和varchar。 不支持编辑数组数据类型、包含时区的时间列和包含时区的时间戳列。 数据库上报的与该操作相关的错误会显示在Data Studio中。
  • 重建索引 使用索引可帮助用户更快地查找数据。以下场景需要重建索引: 索引已破坏,不再包含任何有效数据。虽然理论上不会发生,但事实上,索引可能由于软件或硬件故障而被破坏重建索引提供恢复方法。 索引包含很多空的或几乎为空的页面,DWS数据库的B-tree索引在特定的非常规访问模式下可能会发生这种情况,REINDEX方式可以减少索引的空间消耗,即创建一个新的索引,不再有空页面。 已修改索引的存储参数(如“填充因子”),且希望保证修改完全生效。 执行以下操作重建索引: 右键单击表,选择“重建索引”。弹出消息和状态栏显示已完成操作的状态。 分区ORC表不支持重建索引。
  • 导出DDL和数据 通过导出表DDL和数据,可导出表的DDL和表的数据。 在“对象浏览器”窗格中,右键单击所选表,选择“导出DDL和数据”。 用户需自定义导出路径。如果需要将数据压缩,勾选“.zip”选项。 “Data Studio安全免责声明”必须勾选“我同意”才可以单击“确定”。用户可关闭安全免责声明,关闭后导出DDL时将不会再出现,详情请参见表1。 单击“确定”,右下角的状态栏会显示操作进度。 如果文件名包含Windows中文件名不支持的字符,则文件名的名称会与模式名称不同。 要执行该操作,需要MS Visual C Runtime文件(msvcrt100.dll)。详情请参阅故障处理。 “导出完成”对话框和状态栏显示已完成操作的状态。 表1 支持导出DDL的编码格式 数据库编码 文件编码 支持导出DDL UTF-8 UTF-8 是 GBK 是 LATIN1 是 GBK GBK 是 UTF-8 是 LATIN1 否 LATIN1 LATIN1 是 GBK 否 UTF-8 是 可从普通表和分区表中选择多个对象,以导出DDL和数据。导出的内容包含列、行、索引、约束和分区。
  • 阅读指引 对于首次接触 GaussDB(DWS)的用户,建议先阅读以下部分: 介绍GaussDB(DWS)服务的特点、功能和适用场景。 GaussDB(DWS)入门包含一个示例,引导您完成创建数据仓库集群、创建数据库表、上传数据和测试查询这一过程。 如果打算或正在将应用程序从其他数据仓库向GaussDB(DWS)迁移,您可能想知道GaussDB(DWS)在实施方式上有什么区别。 GaussDB(DWS)进行数据库应用程序开发过程中,下表将帮您找到对应的信息。 如果要.. 查阅建议 快速开始使用GaussDB(DWS)。 首先,按照《数据仓库服务快速入门》中的步骤快速部署集群、连接到数据库并尝试进行一些查询。 准备好构建数据库后,将数据加载到表中并编写查询内容以操作数据仓库中的数据后,可以回到《数据仓库服务数据库开发指南》。 了解GaussDB(DWS)数据仓库的内部架构。 如果您想要更全面地了解GaussDB(DWS)服务,请转到GaussDB(DWS)产品首页。 了解如何设计表以实现良好性能。 开发设计建议介绍数据库应用程序开发过程中,应当遵守的设计规范。依据这些规范进行建模,能够更好的契合GaussDB(DWS)的分布式处理架构,输出更高效的业务SQL代码。 对业务的执行效率不满意,期望通过调优加快业务执行的情况下,可以参考优化查询性能进行调优。性能调优是一项复杂的工程,有些时候无法系统性地说明和解释,而是依赖于DBA的经验判断。尽管如此,优化查询性能一节还是期望能尽量系统性的对性能调优方法加以说明,方便应用开发人员和刚接触GaussDB(DWS)的DBA参考。 加载数据。 导入数据介绍数据入库GaussDB(DWS)的方法和途径。 导入最佳实践提供有关快速高效数据导入的经验提示。 管理用户、组和数据库安全。 管理数据库安全涵盖数据库安全主题。 监控和优化系统性能。 系统表和系统视图详细介绍您可以从中查询数据库状态并监控查询内容与流程的系统表和视图。 您还应该查阅管理指南了解如何使用GaussDB(DWS)管理控制台检查系统运行状况、监控指标。 父主题: 欢迎
  • OUTER JOIN 本节主要介绍Oracle OUTER JOIN的迁移语法。迁移语法决定了关键字/功能的迁移方式。 OUTER JOIN会返回所有满足关联条件的行。此外,如果无法为一个表中的某些行在另一个表中找到任何满足关联条件的行,则该语句会返回这些行。在Oracle中: 通过在WHERE条件中对表B的所有字段使用外连接操作符“+”,表A和B的左外连接返回表A中的所有行和所有满足关联条件的行。 通过在WHERE条件中对表A的所有字段使用外连接操作符“+”,表A和B的右外连接返回表B中的所有行和所有满足关联条件的行。 GaussDB(DWS)不支持“+”操作符。该操作符的功能通过LEFT OUTER JOIN和RIGHT OUTER JOIN关键词实现。 图1 输入:OUTER JOIN 图2 输出:OUTER JOIN 父主题: Oracle语法迁移
  • Netezza配置 设置Netezza配置参数可在迁移Netezza数据库脚本时自定义迁移工具的行为。 打开config文件夹中的features-netezza.properties文件,并根据实际需要设置表1中的参数。 表1 features-netezza.properties文件中的配置参数 参数 说明 取值范围 默认值 样例 rowstoreToColumnstore 是否将rowstore迁移为columnstore。 true false false rowstoreToColumnstore=false cstore_blob cstore_blob取值如下: bytea none bytea none bytea cstore_blob=bytea keywords_addressed_using_as 关键字“addressed_using_as”的取值如下: OWNER ATTRIBUTE SOURCE FREEZE OWNER ATTRIBUTE SOURCE FREEZE OWNER keywords_addressed_using_as=OWNER keywords_addressed_using_doublequote 关键字“addressed_using_doublequote”的可能取值。 FREEZE FREEZE keywords_addressed_using_doublequote=FREEZE 父主题: 配置DSC
  • 应用示例 查询集群的CN和DN信息: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 select * from pgxc_node; node_name | node_type | node_port | node_host | node_port1 | node_host1 | hostis_primary | nodeis_primary | nodeis_preferred | node_id | sctp_port | control_port | sctp_port1 | control_port1 | nodeis_central --------------+-----------+-----------+----------------+------------+----------------+----------------+----------------+----------------- -+-------------+-----------+--------------+------------+---------------+---------------- dn_6001_6002 | D | 40000 | 192.**.***.**1 | 45000 | 192.**.**.**2 | t | f | f | 1644780306 | 40002 | 40003 | 45002 | 45003 | f dn_6003_6004 | D | 40000 | 192.**.**.**2 | 45000 | 192.**.**.**3 | t | f | f | -966646068 | 40002 | 40003 | 45002 | 45003 | f dn_6005_6006 | D | 40000 | 192.**.**.**3 | 45000 | 192.**.***.**1 | t | f | f | 868850011 | 40002 | 40003 | 45002 | 45003 | f cn_5001 | C | 8000 | 192.**.***.**1 | 8000 | 192.**.***.**1 | t | f | f | 1120683504 | 8002 | 8003 | 0 | 0 | f cn_5002 | C | 8000 | 192.**.**.**2 | 8000 | 192.**.**.**2 | t | f | f | -1736975100 | 8002 | 8003 | 0 | 0 | f cn_5003 | C | 8000 | localhost | 8000 | localhost | t | f | f | -125853378 | 8002 | 8003 | 0 | 0 | t (6 rows)
  • DBMS_LOB.SUBSTR DBMS_LOB.SUBSTR通过配置参数MigDbmsLob,用户可以指定迁移此函数还是直接保留。 输入:DBMS_LOB.SUBSTR,MigDbmsLob设为true 如果参数MigDbmsLob设为true,则迁移。相反,如果参数MigDbmsLob设为false,则不迁移。 输入 SELECT dbms_lob.substr('!2d3d4dd!',1,5); 输出 If the config param is true, it should be migrated as below: select substr('!2d3d4dd!',5,1); If false, it should be retained as it is: select dbms_lob.substr('!2d3d4dd!',1,5); 输入 SELECT dbms_lob.substr('!2d3d4dd!',5); 输出 If the config param is true, it should be migrated as below: select substr('!2d3d4dd!',1,5); If false, it should be retained as it is: select dbms_lob.substr('!2d3d4dd!',5);
  • DBMS_LOB.FREETEMPORARY DBMS_LOB.FREETEMPORARY函数释放默认临时表空间中的临时BLOB或CLOB。在调用FREETEMPORARY之后,释放的LOB定位器标记为无效。 输入:DBMS_LOB.CREATETEMPORARY和DBMS_LOB.FREETEMPORARY 1 2 3 4 5 6 7 8 DECLARE v_clob clob; BEGIN DBMS_LOB.CREATETEMPORARY(v_clob, TRUE, DBMS_LOB.SESSION); v_clob := TO_CLOB('abcddedf'); DBMS_OUTPUT.PUT_LINE(v_clob); DBMS_LOB.FREETEMPORARY(v_clob); end; / 输出 1 2 3 4 5 6 7 8 9 DECLARE v_clob clob ; BEGIN /*DBMS_LOB.CREATETEMPORARY(v_clob, TRUE, DBMS_LOB.SESSION);*/ v_clob := cast( 'abcddedf' as CLOB ) ; DBMS_OUTPUT.PUT_LINE ( v_clob ) ; /* DBMS_LOB.FREETEMPORARY(v_clob); */ null ; end ; /
  • DBMS_LOB.INSTR DBMS_LOB.INSTR函数从指定的偏移量开始,返回在LOB中第n次匹配模式的位置。 输入:在SQL中使用DBMS_LOB.INSTR 1 2 3 SELECT expr1, …, DBMS_LOB.INSTR(str, septr, 1, 5) FROM tab1 WHERE …; 输出 1 2 3 SELECT expr1, …, INSTR(str, septr, 1, 5) FROM tab1 WHERE … 输入:在PL/SQL中使用DBMS_LOB.INSTR 1 2 3 4 5 6 BEGIN … pos := DBMS_LOB.INSTR(str,septr,1, i); ... END; / 输出 1 2 3 4 5 6 BEGIN … pos := INSTR(str,septr,1, i); ... END; /
  • DBMS_LOB.CREATETEMPORARY DBMS_LOB.CREATETEMPORARY函数在用户默认的临时表空间中创建一个临时LOB及其对应索引。DBMS_LOB.FREETEMPORARY用于删除临时LOB及其索引。 输入:DBMS_LOB.CREATETEMPORARY和DBMS_LOB.FREETEMPORARY 1 2 3 4 5 6 7 8 DECLARE v_clob clob; BEGIN DBMS_LOB.CREATETEMPORARY(v_clob, TRUE, DBMS_LOB.SESSION); v_clob := TO_CLOB('abcddedf'); DBMS_OUTPUT.PUT_LINE(v_clob); DBMS_LOB.FREETEMPORARY(v_clob); end; / 输出 1 2 3 4 5 6 7 8 9 DECLARE v_clob clob; BEGIN -- DBMS_LOB.CREATETEMPORARY(v_clob, TRUE, DBMS_LOB.SESSION); v_clob := CAST('abcddedf' AS CLOB); DBMS_OUTPUT.PUT_LINE(CAST(v_clob AS TEXT)); -- DBMS_LOB.FREETEMPORARY(v_clob); NULL; end; /
  • 在“SQL终端”页签中加载多条SQL查询 单击“加载至SQL终端并关闭”按钮,可在“SQL终端”页签中加载所选查询,并关闭“历史执行SQL”对话框。 执行如下步骤在“SQL终端”页签中加载多条所选SQL查询: 选择多条所需查询。 单击。 这些查询会添加到“SQL终端”页签中光标所在位置。 如果作业出错时仍继续执行,则终端中的每条语句将作为定时任务依次运行。系统会在控制台上更新执行状态,在进度条中显示作业。当作业执行、进度条更新和控制台更新之间的时间差变得非常细微,则用户无法打开进度条去停止作业执行。此时,必须关闭SQL终端才能停止执行。
共100000条