• 沒有找到結果。

安装配置和启动GDS_数据仓库服务 GaussDB(DWS)_工具指南_GDS并行数据加载工具_华为云

N/A
N/A
Protected

Academic year: 2022

Share "安装配置和启动GDS_数据仓库服务 GaussDB(DWS)_工具指南_GDS并行数据加载工具_华为云"

Copied!
671
0
0

加載中.... (立即查看全文)

全文

(1)

工具指南

文档版本 02

发布日期 2022-01-20

(2)

版权所有 © 华为技术有限公司 2022。 保留一切权利。

非经本公司书面许可,任何单位和个人不得擅自摘抄、复制本文档内容的部分或全部,并不得以任何形式传 播。

商标声明

和其他华为商标均为华为技术有限公司的商标。

本文档提及的其他所有商标或注册商标,由各自的所有人拥有。

注意

您购买的产品、服务或特性等应受华为公司商业合同和条款的约束,本文档中描述的全部或部分产品、服务或 特性可能不在您的购买或使用范围之内。除非合同另有约定,华为公司对本文档内容不做任何明示或暗示的声 明或保证。

由于产品版本升级或其他原因,本文档内容会不定期进行更新。除非另有约定,本文档仅作为使用指导,本文 档中的所有陈述、信息和建议不构成任何明示或暗示的担保。

(3)

目 录

1 工具简介...1

2 工具下载...2

3 gsql 命令行客户端工具...3

3.1 gsql 概述... 3

3.2 使用指导... 14

3.3 获取帮助... 15

3.4 命令参考... 16

3.5 元命令参考... 20

3.6 常见问题处理...42

4 Data Studio 数据库集成开发工具... 46

4.1 Data Studio 简介... 46

4.1.1 Data Studio 概述... 46

4.1.2 约束和限制... 46

4.1.3 发布包结构... 48

4.1.4 系统要求... 50

4.2 安装配置 Data Studio...52

4.3 快速入门... 60

4.4 Data Studio 用户界面...61

4.5 Data Studio 菜单... 62

4.5.1 “文件”菜单... 62

4.5.2 “编辑”菜单... 63

4.5.3 “运行”菜单... 67

4.5.4 “调试”菜单... 67

4.5.5 “设置”菜单... 68

4.5.6 “帮助”菜单... 68

4.6 Data Studio 工具栏... 69

4.7 Data Studio 右键菜单...70

4.8 连接信息... 74

4.8.1 概述(连接信息)... 74

4.8.2 添加连接... 75

4.8.3 重命名连接... 81

4.8.4 编辑连接... 81

(4)

4.8.5 删除连接... 82

4.8.6 查看连接属性... 82

4.8.7 刷新数据库连接...83

4.9 数据库管理... 87

4.9.1 创建数据库... 87

4.9.2 断开所有连接... 88

4.9.3 连接到数据库... 89

4.9.4 断开连接... 89

4.9.5 重命名数据库... 89

4.9.6 删除数据库... 90

4.9.7 查看数据库属性...90

4.10 模式管理... 91

4.10.1 概述... 91

4.10.2 创建模式... 91

4.10.3 导出模式 DDL...92

4.10.4 导出模式 DDL 和数据...93

4.10.5 重命名模式... 94

4.10.6 支持序列 DDL...94

4.10.7 授权/撤销权限... 95

4.10.8 删除模式... 95

4.11 创建函数/过程... 96

4.12 编辑函数/过程... 98

4.13 授权/撤销权限(函数/过程)...99

4.14 调试 PL/SQL 函数... 100

4.14.1 调试 PL/SQL 函数概述...100

4.14.2 使用断点... 100

4.14.3 控制执行... 109

4.14.4 查看调试信息... 112

4.15 使用函数/过程... 114

4.15.1 概述...114

4.15.2 在“PL/SQL Viewer”页签中选择数据库对象...115

4.15.3 导出函数/过程 DDL... 116

4.15.4 在“PL/SQL Viewer”页签中查看对象属性... 117

4.15.5 删除函数/过程...118

4.15.6 执行函数/过程...118

4.15.7 授权/撤销权限...120

4.16 表(GaussDB(DWS))... 120

4.16.1 概述(管理表)... 120

4.16.2 创建普通表...120

4.16.2.1 概述... 120

4.16.2.2 管理列... 127

4.16.2.3 管理约束... 129

(5)

4.16.2.4 管理索引... 130

4.16.3 创建外表... 131

4.16.4 创建分区表...131

4.16.4.1 概述... 131

4.16.4.2 管理分区... 136

4.16.5 授权/撤销权限 - 普通表/分区表... 136

4.16.6 管理表... 137

4.16.6.1 概述... 137

4.16.6.2 重命名表... 138

4.16.6.3 截断表... 138

4.16.6.4 重建表索引... 138

4.16.6.5 分析表... 139

4.16.6.6 清空表... 139

4.16.6.7 设置表描述... 139

4.16.6.8 设置表空间... 139

4.16.6.9 设置模式... 140

4.16.6.10 删除表... 140

4.16.6.11 查看表属性...140

4.16.6.12 授权/撤销权限...141

4.16.7 管理表数据...141

4.16.7.1 概述... 141

4.16.7.2 导出表 DDL... 142

4.16.7.3 导出表 DDL 和数据... 142

4.16.7.4 导出表数据... 143

4.16.7.5 显示 DDL...145

4.16.7.6 导入表数据... 146

4.16.7.7 查看表数据... 147

4.16.7.8 编辑表数据... 149

4.16.8 编辑临时表...153

4.17 序列管理... 154

4.17.1 创建序列... 154

4.17.2 授权/撤销权限...154

4.17.3 使用序列... 155

4.18 视图管理... 156

4.18.1 创建视图... 156

4.18.2 授权/撤销权限...156

4.18.3 使用视图... 156

4.19 表空间管理... 159

4.19.1 使用表空间...160

4.20 用户/角色管理... 161

4.20.1 创建用户/角色...161

4.20.2 管理用户/角色...162

(6)

4.21 SQL 终端管理... 162

4.21.1 打开多个“SQL 终端”页签... 163

4.21.2 管理 SQL 查询执行历史... 166

4.21.3 打开并保存 SQL 脚本... 169

4.21.4 在“SQL 终端”页签中查看表属性和 PL/SQL 函数/过程... 170

4.21.5 终止正在执行的 SQL 查询... 172

4.21.6 SQL 查询格式化...172

4.21.7 在“SQL 终端”页签中选择数据库对象... 178

4.21.8 查看执行计划和开销... 179

4.21.9 图形化查看执行计划和开销... 182

4.21.10 使用 SQL 终端... 185

4.21.11 导出查询结果... 198

4.21.12 管理 SQL 终端连接...199

4.22 批量操作管理...200

4.22.1 概述...200

4.22.2 批量删除对象... 201

4.22.3 授权/撤销权限...202

4.23 自定义 Data Studio... 202

4.23.1 概述...203

4.23.2 通用...203

4.23.3 编辑器... 206

4.23.4 环境...212

4.23.5 导出/导入... 215

4.23.6 结果管理... 216

4.23.7 安全...219

4.24 性能规格... 221

4.25 安全管理... 222

4.25.1 概述...223

4.25.2 登录历史... 223

4.25.3 密码到期通知... 223

4.25.4 确保应用程序内存数据安全... 223

4.25.5 保存数据加密... 223

4.25.6 SQL 历史记录... 224

4.25.7 SSL 证书...224

4.26 故障处理... 230

4.27 FAQs...237

5 GDS 并行数据加载工具... 242

5.1 安装配置和启动 GDS... 242

5.2 停止 GDS... 246

5.3 GDS 导入示例... 246

5.4 gds... 249

5.5 gds_ctl.py... 252

(7)

5.6 处理错误表... 254

6 DSC SQL 语法迁移工具...258

6.1 概述... 258

6.2 支持的关键词和特性... 259

6.3 DSC 约束和限制... 260

6.4 系统要求(DSC)... 261

6.5 安装 DSC... 263

6.6 配置 DSC... 266

6.6.1 DSC 概述... 266

6.6.2 DSC 配置... 266

6.6.3 Teradata SQL 配置... 271

6.6.4 Oracle SQL 配置... 277

6.6.5 Teradata Perl 配置... 285

6.6.6 MySQL SQL 配置...289

6.6.7 Netezza 配置... 292

6.7 使用 DSC... 293

6.7.1 迁移流程... 293

6.7.1.1 迁移流程概述... 293

6.7.1.2 前提条件... 295

6.7.1.3 准备工作... 299

6.7.1.4 使用 DSC 迁移...300

6.7.1.5 查看输出文件和日志... 303

6.7.1.6 故障处理(DSC 迁移)... 303

6.7.2 Teradata SQL 迁移... 303

6.7.3 Oracle SQL 迁移... 304

6.7.4 Teradata Perl 迁移... 306

6.7.5 Netezza SQL 迁移...309

6.7.6 MySQL SQL 迁移...310

6.7.7 SQL Formatter...311

6.8 Teradata 语法迁移...313

6.8.1 Teradata 迁移概述... 313

6.8.2 模式对象... 313

6.8.2.1 表迁移... 313

6.8.2.2 索引迁移... 330

6.8.2.3 视图迁移... 332

6.8.2.4 COLLECT STATISTICS... 336

6.8.2.5 ACCESS LOCK... 337

6.8.2.6 DBC.COLUMNS... 337

6.8.2.7 DBC.TABLES...340

6.8.2.8 DBC.INDICES...341

6.8.3 SHOW STATS VALUES SEQUENCED... 342

6.8.4 DML(Teradata)... 343

(8)

6.8.5 查询迁移操作符... 355

6.8.6 查询优化操作符... 366

6.8.7 系统函数和操作符... 368

6.8.8 数学函数... 373

6.8.9 字符串函数(Teradata)... 374

6.8.10 日期和时间函数... 375

6.8.11 类型转换和格式化...380

6.8.12 BTEQ 工具命令... 385

6.8.13 DSQL... 394

6.9 Oracle 语法迁移... 399

6.9.1 Oracle 迁移概述... 399

6.9.2 模式对象... 399

6.9.2.1 表(Oracle)... 399

6.9.2.2 临时表... 421

6.9.2.3 全局临时表...421

6.9.2.4 索引...422

6.9.2.5 视图...424

6.9.2.6 序列...425

6.9.2.7 PURGE...429

6.9.2.8 数据库关键字... 429

6.9.3 COMPRESS 短语...435

6.9.4 Bitmap 索引... 436

6.9.5 自定义表空间...436

6.9.6 附加日志数据...437

6.9.7 LONG RAW... 438

6.9.8 DML(Oracle)... 439

6.9.9 伪列... 452

6.9.10 OUTER JOIN... 454

6.9.11 OUTER QUERY (+)... 455

6.9.12 CONNECT BY... 456

6.9.13 系统函数... 458

6.9.13.1 日期函数... 458

6.9.13.2 LOB 函数... 461

6.9.13.3 字符串函数(Oracle)...465

6.9.13.4 分析函数... 469

6.9.13.5 正则表达式函数... 472

6.9.14 PL/SQL... 477

6.9.15 PL/SQL 集合(使用自定义类型)... 491

6.9.16 PL/SQL 包...497

6.9.16.1 包... 497

6.9.16.2 包变量... 508

6.9.16.3 包拆分... 525

(9)

6.9.16.4 REF CURSOR... 528

6.9.16.5 创建包模式... 529

6.9.17 VARRAY... 529

6.9.18 授予执行权限... 530

6.9.19 包名列表... 532

6.9.20 数据类型... 532

6.9.21 支持中文字符... 534

6.10 Netezza 语法迁移... 534

6.10.1 表(Netezza)... 535

6.10.2 PROCEDURE(使用 RETURNS)... 536

6.10.3 Procedure...540

6.10.4 系统函数(Netezza)... 551

6.10.5 算子...552

6.10.6 DML(Netezza)... 553

6.10.7 Index...554

6.11 MySQL 语法迁移... 556

6.11.1 基本数据类型... 556

6.11.2 表(可选参数)... 566

6.11.3 表(操作)...578

6.11.4 唯一索引... 585

6.11.5 普通索引和前缀索引... 587

6.11.6 HASH 索引... 588

6.11.7 BTREE 索引... 589

6.11.8 SPATIAL 空间索引...591

6.11.9 删除索引... 593

6.11.10 注释... 594

6.11.11 数据库... 594

6.11.12 数据操作语句(DML)... 595

6.11.13 事务管理与数据库管理... 601

6.12 DB2 语法迁移... 605

6.12.1 表(DB2)... 605

6.12.2 DML(DB2)... 608

6.12.3 索引(DB2)...610

6.12.4 NICKNAME... 610

6.12.5 语句...610

6.12.6 系统功能... 611

6.13 命令行参考... 613

6.13.1 数据库模式迁移... 613

6.13.2 Version 命令... 618

6.13.3 Help 命令... 618

6.14 日志参考... 620

6.14.1 日志概述... 620

(10)

6.14.2 SQL 迁移日志... 621

6.14.3 Perl 迁移日志... 623

6.15 DSC 故障处理... 624

6.16 DSC 常见问题... 627

6.17 安全管理... 627

7 服务端工具... 629

7.1 gs_dump... 629

7.2 gs_dumpall...639

7.3 gs_restore... 644

7.4 gds_check... 650

7.5 gds_ctl...653

7.6 gds_install... 656

7.7 gds_uninstall... 657

7.8 gs_sshexkey...658

(11)

1 工具简介

本手册介绍数据仓库服务的工具使用,工具简介及版本配套关系如表1-1所示。

1-1 工具简介

工具名称 工具简介

gsql 一款运行在Linux操作系统的命令行工具,用于连接DWS集群中 的数据库,并对数据库进行操作和维护。

Data Studio 用于连接数据库的客户端工具,有着丰富的GUI界面,能够管理 数据库和数据库对象,编辑、运行、调试SQL脚本,查看执行计 划等。Data Studio工具可运行在32位或64位windows操作系统 上,解压软件包后免安装即可使用。

GDS 一款运行在Linux操作系统的命令行工具,通过和外表机制的配 合,实现数据的高速导入导出。GDS工具包需要安装在数据源文 件所在的服务器上,数据源文件所在的服务器称为数据服务器,

也叫GDS服务器。

DSC 用于将Teradata或Oracle数据库中的sql脚本迁移为适用于 GaussDB(DWS)的sql脚本,便于在GaussDB(DWS)中重建数据 库。DSC工具是运行在Linux操作系统的命令行工具,解压软件 包免安装即可使用。

(12)

2 工具下载

步骤1 登录GaussDB(DWS) 管理控制台。

通过访问以下地址登录GaussDB(DWS) 管理控制台:https://

console.huaweicloud.com/dws。

步骤2 在左侧导航栏中,单击“连接管理”。

步骤3 在“下载客户端和驱动”区域,请根据计算机的操作系统,选择对应版本的工具进行 下载。

此处可以下载以下工具:

● gsql命令行客户端:gsql工具包中包含了gsql客户端工具、GDS并行数据加载工具 以及gs_dump、gs_dumpall和gs_restore工具。

● Data Studio图形界面客户端

● DSC迁移工具

对于gsql客户端工具、Data Studio客户端工具,存在多个历史版本,单击“历史版 本”可根据集群版本下载相应版本的工具。GaussDB(DWS) 集群可向下兼容gsql、

Data Studio工具,建议按集群版本下载配套的工具版本。

2-1 下载客户端

----结束

(13)

3 gsql 命令行客户端工具

3.1 gsql 概述

基本功能

● 连接数据库: 通过gsql客户端远程连接GaussDB(DWS)数据库。

说明

gsql创建连接时,会有5分钟超时时间。如果在这个时间内,数据库未正确地接受连接并对 身份进行认证,gsql将超时退出。

针对此问题,可以参考常见问题处理。

● 执行SQL语句:支持交互式地键入并执行SQL语句,也可以执行一个文件中指定的 SQL语句。

● 执行元命令:元命令可以帮助管理员查看数据库对象的信息、查询缓存区信息、

格式化SQL输出结果,以及连接到新的数据库等。元命令的详细说明请参见元命 令参考。

高级特性

gsql的高级特性如表3-1所示。

(14)

3-1 gsql 高级特性 特性名称 描述

变量 gsql提供类似于Linux的shell命令的变量特性,可以使用gsql的元命令

\set设置一个变量,格式如下:

\set varname value

要删除一个变量请使用如下方式:

\unset varname 说明

● 变量只是简单的名称/值对,值的长度由特殊变量VAR_MAX_LENGTH决定,

详细参见表3-2。

● 变量名称必须由字母(包括非拉丁字母)、数字和下划线组成,且对大小写 敏感。

● 如果使用\set varname的格式(不带第二个参数),则只是设置这个变量而 没有给变量赋值。

● 可以使用不带参数的\set来显示所有变量的值。

变量的示例和详细说明请参见变量。

SQL代换 利用gsql的变量特性,可以将常用的SQL语句设置为变量,以简化操 作。

SQL代换的示例和详细说明请参见SQL代换。

自定义提示

符 gsql使用的提示符支持用户自定义。可以通过修改gsql预留的三个变量 PROMPT1、PROMPT2、PROMPT3来改变提示符。

这三个变量的值可以用户自定义,也可以使用gsql预定义的值。详细 请参见提示符。

客户端操作 历史记录

gsql支持客户端操作历史记录,当客户端连接时指定“-r”参数,此功 能被打开。可以通过\set设置记录历史的条数,例如,\set HISTSIZE 50,将记录历史的条数设置为50,\set HISTSIZE 0,不记录历史。

说明

● 客户端操作历史记录条数默认设置为32条,最多支持记录500条。当客户端 交互式输入包含中文字符时,只支持UTF-8 的编码环境。

● 出于安全考虑,将包含PASSWORD、IDENTIFIED敏感词的记录识别为敏感 信息,不会记录到历史信息中,即不能通过上下翻回显。

● 变量

可以使用gsql元命令\set设置一个变量。例如把变量foo的值设置为bar:

\set foo bar

要引用变量的值,在变量前面加冒号。例如查看变量的值:

\echo :foo bar

这种变量的引用方法适用于规则的SQL语句和元命令。

在使用命令行参数--dynamic-param(详见表3-7),或设置特殊变量

DYNAMIC_PARAM_ENABLE(详见表3-2)为true时,可通过执行SQL语句设置变 量。变量名为SQL执行结果的列名,也可使用${}方式引用。例如:

\set DYNAMIC_PARAM_ENABLE true SELECT 'Jack' AS "Name";

Name ---

(15)

Jack (1 row)

\echo ${Name}

Jack

上述示例中,通过SELECT语句执行设置Name变量,并在后面使用${}的引用方式 获得变量Name的值。示例中通过特殊变量DYNAMIC_PARAM_ENABLE控制这一 功能,也可通过命令行参数--dynamic-param控制,如gsql -d postgres -p 25308 --dynamic-param -r。

说明

● SQL执行失败时,不设置变量。

● SQL执行结果为空,以列名设置变量,赋值空字符串。

● SQL执行结果为一条记录,以列名设置变量,赋值对应字符串。

● SQL执行结果为多条记录,以列名设置变量,使用特定字符串拼接,然后赋值。特定字 符串由特殊变量RESULT_DELIMITER(详见表3-2)控制,默认为“,”。

执行SQL语句设置变量示例:

\set DYNAMIC_PARAM_ENABLE true

CREATE TABLE student (id INT, name VARCHAR(32)) DISTRIBUTE BY HASH(id);

CREATE TABLE

INSERT INTO student VALUES (1, 'Jack'), (2, 'Tom'), (3, 'Jerry');

INSERT 0 3

-- 执行失败时,不设置变量

SELECT id, name FROM student ORDER BY idi;

ERROR: column "idi" does not exist

LINE 1: SELECT id, name FROM student ORDER BY idi;

^

\echo ${id} ${name}

${id} ${name}

-- 执行结果为多条记录时,使用特定字符串拼接 SELECT id, name FROM student ORDER BY id;

id | name ----+--- 1 | Jack 2 | Tom 3 | Jerry (3 rows)

\echo ${id} ${name}

1,2,3 Jack,Tom,Jerry -- 执行结果为一条记录时

SELECT id, name FROM student where id = 1;

id | name ----+--- 1 | Jack (1 row)

\echo ${id} ${name}

1 Jack

-- 执行结果为空时,赋值空字符串

SELECT id, name FROM student where id = 4;

id | name ----+--- (0 rows)

\echo ${id} ${name}

gsql预定义了一些特殊变量,同时也规划了变量的取值。为了保证和后续版本最 大限度地兼容,请避免以其他目的使用这些变量。所有特殊变量见表3-2。

(16)

说明

● 所有特殊变量都由大写字母、数字和下划线组成。

● 要查看特殊变量的默认值,请使用元命令\echo :varname(例如\echo :DBNAME)。

3-2 特殊变量设置

变量 设置方法 变量说明

DBNAME \set DBNAME dbname 当前连接的数据库的名字。每次连接数据 库时都会被重新设置。

ECHO \set ECHO all | queries ● 如果设置为all,只显示查询信息。设置

为all等效于使用gsql连接数据库时指 定-a参数。

● 如果设置为queries,显示命令行和查询 信息。等效于使用gsql连接数据库时指 定-e参数。

ECHO_HIDD EN

\set ECHO_HIDDEN

on | off | noexec 当使用元命令查询数据库信息(例如\dg)

时,此变量的取值决定了查询的行为:

● 设置为on,先显示元命令实际调用的查 询语句,然后显示查询结果。等效于使 用gsql连接数据库时指定-E参数。

● 设置为off,则只显示查询结果。

● 设置为noexec,则只显示查询信息,不 执行查询操作。

ENCODING \set ENCODING

encoding 当前客户端的字符集编码。

FETCH_COU NT

\set FETCH_COUNT

variable ● 如果该变量的值为大于0的整数,假设

为n,则执行SELECT语句时每次从结果 集中取n行到缓存并显示到屏幕。

● 如果不设置此变量,或设置的值小于等 于0,则执行SELECT语句时一次性把结 果都取到缓存。

说明

设置合理的变量值,将减少内存使用量。一般 来说,设为100到1000之间的值比较合理。

HISTCONTR OL

\set HISTCONTROL ignorespace | ignoredups | ignoreboth | none

● ignorespace:以空格开始的行将不会 写入历史列表。

● ignoredups:与以前历史记录里匹配的 行不会写入历史记录。

● ignoreboth、none或者其他值:所有以 交互模式读入的行都被保存到历史列 表。

说明none表示不设置HISTCONTROL。

(17)

变量 设置方法 变量说明

HISTFILE \set HISTFILE filename 此文件用于存储历史名列表。缺省值是

~/.bash_history。

HISTSIZE \set HISTSIZE size 保存在历史命令里命令的个数。缺省值是 500。

HOST \set HOST hostname 已连接的数据库主机名称。

IGNOREEOF \set IGNOREEOF

variable ● 若设置此变量为数值,假设为10,则在

gsql中输入的前9次EOF字符(通常是 Ctrl+C组合键)都会被忽略,在第10次 按Ctrl+C才能退出gsql程序。

● 若设置此变量为非数值,则缺省为10。

● 若删除此变量,则向交互的gsql会话发 送一个EOF终止应用。

LASTOID \set LASTOID oid 最后影响的oid值,即为从一条INSERT或 lo_import命令返回的值。此变量只保证在 下一条SQL语句的结果显示之前有效。

ON_ERROR_

ROLLBACK

\set

ON_ERROR_ROLLBAC K on | interactive | off

● 如果是on,当一个事务块里的语句产生 错误的时候,这个错误将被忽略而事务 继续。

● 如果是interactive,这样的错误只是在 交互的会话里忽略。

● 如果是off(缺省),事务块里一个语句 生成的错误将会回滚整个事务。

on_error_rollback-on模式是通过在一 个事务块的每个命令前隐含地发出一个 SAVEPOINT的方式工作的,在发生错 误的时候回滚到该事务块。

ON_ERROR_

STOP

\set ON_ERROR_STOP

on | off ● on:命令执行错误时会立即停止,在交

互模式下,gsql会立即返回已执行命令 的结果。

● off(缺省):命令执行错误时将会跳过 错误继续执行。

PORT \set PORT port 正连接数据库的端口号。

USER \set USER username 当前用于连接的数据库用户。

(18)

变量 设置方法 变量说明 VERBOSITY \set VERBOSITY

terse | default | verbose

这个选项可以设置为值terse、default、

verbose之一以控制错误报告的冗余行。

● terse:仅返回严重且主要的错误文本以 及文本位置(一般适合于单行错误信 息)。

● default:返回严重且主要的错误文本及 其位置,还包括详细的错误细节、错误 提示(可能会跨越多行)。

● verbose:返回所有的错误信息。

VAR_NOT_F OUND

\set

VAR_NOT_FOUND default | null | error

可以设置为default、null、error之一以控 制引用变量不存在时的处理方式。

● default:不做变量替换,保持原有字符 串。

● null:将原有字符串替换为空字符串。

● error:输出报错信息,保持原有字符 串。

VAR_MAX_LE NGTH

\set

VAR_MAX_LENGTH variable

用于控制变量值的长度,默认为4096。如 果变量值的长度超过该值,变量值会被截 断,并输出告警信息。

ERROR_LEVE L

\set ERROR transaction | statement

表示ERROR标识成功或者失败类型,取值 为transaction或statement,默认为 transaction。

● statement:ERROR记录上一条SQL语 句是否执行成功。

● transaction:ERROR记录上一条SQL语 句是否执行成功,或上一个事务内部执 行是否出错。

ERROR \set ERROR true | false 表示上一条SQL语句执行成功或失败,或 上一个事务内部执行是否出错,成功取值 false,失败取值true,默认为false。执行 SQL语句更新,不建议手动设置。

LAST_ERROR _SQLSTATE

\set

LAST_ERROR_SQLSTA TE state

表示上一条执行失败的SQL语句的错误状 态码,默认为‘00000’。执行SQL语句更 新,不建议手动设置。

LAST_ERROR _MESSAGE

\set

LAST_ERROR_MESSAG E message

表示上一条执行失败的SQL语句的错误信 息,默认为空字符串。执行SQL语句更 新,不建议手动设置。

(19)

变量 设置方法 变量说明 ROW_COUN

T

\set ROW_COUNT

count ● ERROR_LEVEL为statement时,表示上

一条SQL语句执行返回的行数或受影响 的行数。

● ERROR_LEVEL为transaction时,如果 事务结束时内部有错,表示事务内最后 一个SQL语句执行返回的行数或受影响 的行数,否则表示上一条SQL语句执行 返回的行数或受影响的行数。

如果SQL语句执行失败设置为0,默认为 0。执行SQL语句更新,不建议手动设置。

SQLSTATE \set SQLSTATE state ● ERROR_LEVEL为statement时,表示上 一条SQL语句执行的状态码。

● ERROR_LEVEL为transaction时,如果 事务结束时内部有错,表示事务内最后 一个SQL语句执行的状态码,否则表示 上一条SQL语句执行的状态码。

默认为‘00000’。执行SQL语句更新,不 建议手动设置。

LAST_SYS_C ODE

\set LAST_SYS_CODE

code 表示上一条系统命令执行的返回值,默认 为0。使用元命令\!调用系统命令更新,不 建议手动设置。

DYNAMIC_P ARAM_ENAB LE

\set

DYNAMIC_PARAM_EN ABLE true | false

用于控制执行SQL语句生成变量和${}变量 引用方式,默认为fasle。

● true:执行SQL语句生成变量,支持${}

变量引用方式。

● false:执行SQL语句不生成变量,不支 持${}变量引用方式。

RESULT_DELI MITER

\set

RESULT_DELIMITER delimiter

执行SQL语句生成变量时,多条记录之间 的拼接使用该参数控制,默认为“,”。

(20)

变量 设置方法 变量说明 COMPARE_S

TRATEGY

\set

COMPARE_STRATEGY default | natural | equal

用于控制\if表达式中大小比较的策略,默 认为default。

● default:默认的比较策略,只支持字符 串或数字比较,不支持混合比较。单引 号内的按照字符串处理,单引号外的按 照数字处理。

● natural:在default的基础上,包含动 态变量的按照字符串处理。当比较操作 符有一侧是数字,尝试将另一侧转换为 数字,然后比较。如果转换失败,报错 且比较结果为假。

● equal:只支持等值比较,所有情况按 照字符串比较。

详细说明和使用示例请参考\if条件块比较 规则说明与示例。

COMMAND_

ERROR_STOP

\set

COMMAND_ERROR_S TOP on | off

用于控制元命令执行错误时是否报错退 出,默认不退出。

使用示例请参考

COMMAND_ERROR_STOP使用示例。

– 特殊变量ERROR_LEVEL和ERROR使用示例:

当ERROR_LEVEL为statement时,ERROR只记录上一条SQL语句是否执行成功。

示例如下,当事务中出现SQL执行报错,事务结束时,ERROR值为false。此时的 ERROR只记录上一个SQL语句end是否执行成功。

\set ERROR_LEVEL statement begin;

BEGIN select 1 as ;

ERROR: syntax error at or near ";"

LINE 1: select 1 as ; ^ end;ROLLBACK

\echo :ERROR false

当ERROR_LEVEL为transaction时,ERROR可以捕获事务内的SQL执行错误。示例 如下,事务中出现SQL执行报错,事务结束时,ERROR值为true。

\set ERROR_LEVEL transaction begin;

BEGIN select 1 as ;

ERROR: syntax error at or near ";"

LINE 1: select 1 as ; ^ end;ROLLBACK

\echo :ERROR true

– 特殊变量COMMAND_ERROR_STOP使用示例:

当COMMAND_ERROR_STOP为on时,元命令执行错误时,报错退出。开启时能 有效的识别到元命令的执行错误。

(21)

当COMMAND_ERROR_STOP为off时,元命令执行错误时,打印相关信息不退 出,脚本继续执行。

\set COMMAND_ERROR_STOP on

\i /home/omm/copy_data.sql select id, name from student;

如上脚本中COMMAND_ERROR_STOP设置为on,元命令报错之后输出错误信 息,脚本不再执行。

gsql:test.sql:2: /home/omm/copy_data.sql: Not a directory

如果COMMAND_ERROR_STOP设置为off,元命令报错之后输出错误信息,继续 执行SELECT语句。

gsql:test.sql:2: /home/omm/copy_data.sql: Not a directory id | name

----+--- 1 | Jack (1 row)

● SQL代换

像元命令的参数一样,gsql变量的一个关键特性是可以把gsql变量替换成正规的 SQL语句。此外,gsql还提供为变量更换新的别名或其他标识符等功能。使用SQL 代换方式替换一个变量的值可在变量前加冒号。例如:

\set foo 'HR.areaS' select * from :foo;

area_id | area_name ---+--- 4 | Iron

3 | Desert 1 | Wood 2 | Lake (4 rows)

执行以上命令,将会查询HR.areaS表。

须知

变量的值是逐字复制的,甚至可以包含不对称的引号或反斜杠命令。所以必须保 证输入的内容有意义。

● 提示符

通过表3-3的三个变量可以设置gsql的提示符,这些变量是由字符和特殊的转义字 符所组成。

3-3 提示符变量

变量 描述 示例

PROMPT1 gsql请求一个新命令时使 用的正常提示符。

PROMPT1的默认值为:

%/%R%#

使用变量PROMPT1切换提示符:

● 提示符变为[local]:

\set PROMPT1 %M

[local:/tmp/gaussdba_mppdb]

● 提示符变为name:

\set PROMPT1 name name

● 提示符变为=:

\set PROMPT1 %R

=

(22)

变量 描述 示例 PROMPT2 在一个命令输入期待更多

输入时(例如,查询没有 用一个分号结束或者引号 不完整)显示的提示符。

使用变量PROMPT2显示提示符:

\set PROMPT2 TEST select * from HR.areaS TEST;

area_id | area_name ---+--- 1 | Wood

2 | Lake 4 | Iron 3 | Desert (4 rows))

PROMPT3 当执行COPY命令,并期 望在终端输入数据时(例 如,COPY FROM

STDIN),显示提示符。

使用变量PROMPT3显示COPY提示符:

\set PROMPT3 '>>>>' copy HR.areaS from STDIN;

Enter data to be copied followed by a newline.

End with a backslash and a period on a line by itself.

>>>>1 aa

>>>>2 bb

>>>>\.

提示符变量的值是按实际字符显示的,但是,当设置提示符的命令中出现“%”

时,变量的值根据“%”后的字符,替换为已定义的内容,已定义的提示符请参 见表3-4。

3-4 已定义的替换

符号 符号说明

%M 主机的全名(包含域名),若连接是通过Unix域套接字进行的,

则全名为[local],若Unix域套接字不是编译的缺省位置,就是 [local:/dir/name]。

%m 主机名删去第一个点后面的部分。若通过Unix域套接字连接,则 为[local]。

%> 主机正在侦听的端口号。

%n 数据库会话的用户名。

%/ 当前数据库名称。

%~ 类似 %/,如果数据库是缺省数据库时输出的是波浪线~。

%# 如果会话用户是数据库系统管理员,使用#,否则用>。

%R ● 对于PROMPT1通常是“=”,如果是单行模式则是“^”,如 果会话与数据库断开(如果\connect失败可能发生)则是

“!”。

● 对于PROMPT2该序列被“ -”、“ *”、单引号、双引号或

“$”(取决于gsql是否等待更多的输入:查询没有终止、正在 一个 /* ... */ 注释里、正在引号或者美元符扩展里)代替。

(23)

符号 符号说明

%x 事务状态:

● 如果不在事务块里,则是一个空字符串。

● 如果在事务块里,则是“*”。

● 如果在一个失败的事务块里则是“!”。

● 如果无法判断事务状态时为“?”(比如没有连接)。

%digits 指定字节值的字符将被替换到该位置。

%:name gsql变量“name”的值。

%comma

nd command的输出,类似于使用“^”替换。

%[ . . . %] 提示可以包含终端控制字符,这些字符可以改变颜色、背景、提示 文本的风格、终端窗口的标题。例如,

potgres=> \set PROMPT1 '%[%033[1;33;40m%]%n@%/%R%

[%033[0m%]%#'

这个句式的结果是在VT100兼容的可显示彩色的终端上的一个宽体

(1;)黑底黄字(33;40)。

环境变量

3-5 与 gsql 相关的环境变量

名称 描述

COLUMNS 如果\set columns为0,则由此参数控制wrapped格式的宽 度。这个宽度用于决定在自动扩展的模式下,是否要把宽 输出模式变成竖线的格式。

PAGER 如果查询结果无法在一页显示,它们就会被重定向到这个 命令。可以用\pset命令关闭分页器。典型的是用命令more 或less来实现逐页查看。缺省值是平台相关的。

说明less的文本显示,受系统环境变量LC_CTYPE影响。

PSQL_EDITOR \e和\ef命令使用环境变量指定的编辑器。变量是按照列出 的先后顺序检查的。在Unix系统上默认的编辑工具是vi。

EDITOR VISUAL

PSQL_EDITOR_LINEN

UMBER_ARG 当\e和\ef带上一行数字参数使用时,这个变量指定的命令 行参数用于向编辑器传递起始行数。像Emacs或vi这样的编 辑器,这只是个加号。如果选项和行号之间需要空白,在 变量的值后加一个空格。例如:

PSQL_EDITOR_LINENUMBER_ARG = '+' PSQL_EDITOR_LINENUMBER_ARG='--line '

Unix系统默认的是+。

(24)

名称 描述

PSQLRC 用户的.gsqlrc文件的交互位置。

SHELL 使用\!命令跟shell执行的命令是一样的效果。

TMPDIR 存储临时文件的目录。缺省是/tmp。

3.2 使用指导

下载安装 gsql 并使用 gsql 连接集群数据库

关于gsql的下载、安装以及连接集群数据库的具体操作,请参见《数据仓库服务管理 指南》中的使用gsql命令行客户端连接集群。

示例

以把一个查询分成多行输入为例。注意提示符的变化:

postgres=# CREATE TABLE HR.areaS(

postgres(# area_ID NUMBER, postgres(# area_NAME VARCHAR2(25) postgres-# )tablespace EXAMPLE;

CREATE TABLE

查看表的定义:

\d HR.areaS

Table "hr.areas"

Column | Type | Modifiers ---+---+--- area_id | numeric | not null area_name | character varying(25) |

向HR.areaS表插入四行数据:

INSERT INTO HR.areaS (area_ID, area_NAME) VALUES (1, 'Wood');

INSERT 0 1

INSERT INTO HR.areaS (area_ID, area_NAME) VALUES (2, 'Lake');

INSERT 0 1

INSERT INTO HR.areaS (area_ID, area_NAME) VALUES (3, 'Desert');

INSERT 0 1

INSERT INTO HR.areaS (area_ID, area_NAME) VALUES (4, 'Iron');

INSERT 0 1

切换提示符:

\set PROMPT1 '%n@%m %~%R%#' dbadmin@[local] postgres=#

查看表:

dbadmin@[local] postgres=#SELECT * FROM HR.areaS;

area_id | area_name ---+--- 1 | Wood

4 | Iron 2 | Lake 3 | Desert (4 rows)

可以用\pset命令以不同的方法显示表:

(25)

dbadmin@[local] postgres=#\pset border 2 Border style is 2.

dbadmin@[local] postgres=#SELECT * FROM HR.areaS;

+---+---+

| area_id | area_name | +---+---+

| 1 | Wood |

| 2 | Lake |

| 3 | Desert |

| 4 | Iron |

+---+---+

(4 rows)

dbadmin@[local] postgres=#\pset border 0 Border style is 0.

dbadmin@[local] postgres=#SELECT * FROM HR.areaS;

area_id area_name --- --- 1 Wood

2 Lake 3 Desert 4 Iron (4 rows)

使用元命令:

dbadmin@[local] postgres=#\a \t \x Output format is unaligned.

Showing only tuples.

Expanded display is on.

dbadmin@[local] postgres=#SELECT * FROM HR.areaS;

area_id|2 area_name|Lake area_id|1 area_name|Wood area_id|4 area_name|Iron area_id|3 area_name|Desert

dbadmin@[local] postgres=#

3.3 获取帮助

操作步骤

● 连接数据库时,可以使用如下命令获取帮助信息。

gsql --help

显示如下帮助信息:

...

Usage:

gsql [OPTION]... [DBNAME [USERNAME]]

General options:

-c, --command=COMMAND run only single command (SQL or internal) and exit -d, --dbname=DBNAME database name to connect to (default: "postgres") -f, --file=FILENAME execute commands from file, then exit

...

● 连接到数据库后,可以使用如下命令获取帮助信息。

help

显示如下帮助信息:

You are using gsql, the command-line interface to gaussdb.

Type: \copyright for distribution terms

(26)

\h for help with SQL commands \? for help with gsql commands

\g or terminate with semicolon to execute query \q to quit

任务示例

步骤1 查看gsql的帮助信息。具体执行命令请参见表3-6。

3-6 使用 gsql 联机帮助

描述 示例

查看版权信息 \copyright 查看GaussDB(DWS)支

持的SQL语句的帮助 查看GaussDB(DWS)支持的SQL语句的帮助 例如,查看GaussDB(DWS)支持的所有SQL语句:

\hAvailable help:

ABORT ALTER DATABAE

ALTER DATA SOURCE ... ...

例如,查看CREATE DATABASE命令的参数可使用下面的 命令:\help CREATE DATABASE

Command: CREATE DATABASE Description: create a new database Syntax:

CREATE DATABASE database_name [ [ WITH ] {[ OWNER [=] user_name ]|

[ TEMPLATE [=] template ]|

[ ENCODING [=] encoding ]|

[ LC_COLLATE [=] lc_collate ]|

[ LC_CTYPE [=] lc_ctype ]|

[ DBCOMPATIBILITY [=] compatibility_type ]|

[ TABLESPACE [=] tablespace_name ]|

[ CONNECTION LIMIT [=] connlimit ]}[...] ];

查看gsql命令的帮助 例如,查看gsql支持的命令:

\?General

\copyright show PostgreSQL usage and distribution terms \g [FILE] or ; execute query (and send results to file or |pipe) \h(\help) [NAME] help on syntax of SQL commands, * for all commands

\q quit gsql ... ...

----结束

3.4 命令参考

详细的gsql参数请参见表3-7、表3-8、表3-9和表3-10。

(27)

3-7 常用参数

参数 参数说明 取值范围

-c, --

command=CO MMAND

声明gsql要执行一条字符串命令然后退出。 -

-C, --set-

file=FILENAME 使用文件作为命令源而不是交互式输入,

gsql处理完文件后不退出,继续处理其他内 容。

绝对路径或相对路 径,且满足操作系 统路径命名规则。

-d, --

dbname=DBNA ME

指定想要连接的数据库名称。 字符串。

-D, --dynamic-

param 用于控制执行SQL语句设置变量和${}变量引 用方式,具体示例参见变量。

-

-f, --

file=FILENAME 使用文件作为命令源而不是交互式输入。

gsql将在处理完文件后结束。如果

FILENAME是-(连字符),则从标准输入读 取。

绝对路径或相对路 径,且满足操作系 统路径命名规则。

-l, --list 列出所有可用的数据库,然后退出。 - -v, --set, --

variable=NAME

=VALUE

设置gsql变量NAME为VALUE。

变量的示例和详细说明请参见变量。

-

-X, --no-gsqlrc 不读取启动文件(系统范围的gsqlrc或者用 户的~/.gsqlrc都不读取)。

说明启动文件默认为~/.gsqlrc,或通过PSQLRC环境 变量指定。

-

-1 ("one"), -- single- transaction

当gsql使用-f选项执行脚本时,会在脚本的 开头和结尾分别加上START

TRANSACTION/COMMIT用以把整个脚本 当作一个事务执行。这将保证该脚本完全执 行成功,或者脚本无效。

说明如果脚本中已经使用了START TRANSACTION,

COMMIT,ROLLBACK,则该选项无效。

-

-?, --help 显示关于gsql命令行参数的帮助信息然后退

出。 -

-V, --version 打印gsql版本信息然后退出。 -

(28)

3-8 输入和输出参数

参数 参数说明 取值范围

-a, --

echo-all 在读取行时向标准输出打印所有内容。

注意使用此参数可能会暴露部分SQL语句中的敏感信息,如创 建用户语句中的password信息等,请谨慎使用。

-

-e, -- echo- queries

把所有发送给服务器的查询同时回显到标准输出。

注意使用此参数可能会暴露部分SQL语句中的敏感信息,如创 建用户语句中的password信息等,请谨慎使用。

-

-E, -- echo- hidden

回显由\d和其他反斜杠命令生成的实际查询。 -

-k, -- with- key=KEY

使用gsql对导入的加密文件进行解密。

须知对于本身就是shell命令中的关键字符如单引号(')或双引 号("),Linux shell会检测输入的单引号(')或双引号

(")是否匹配。如果不匹配,shell认为用户没有输入完 毕,会一直等待用户输入,从而不会进入到gsql程序。

-

-L, --log- file=FILE NAME

除了正常的输出源之外,把所有查询输出记录到文 件FILENAME中。

注意

● 使用此参数可能会暴露部分SQL语句中的敏感信息,如 创建用户语句中的password信息等,请谨慎使用。

● 此参数只保留查询结果到相应文件中,主要目标是为 了查询结果能够更好更准确地被其他调用者(例如自 动化运维脚本)解析;而不是保留gsql运行过程中的相 关日志信息。

绝对路径或相对 路径,且满足操 作系统路径命名 规则。

-m, -- maintena nce

允许在两阶段事务恢复期间连接集群。

说明

该选项是一个开发选项,禁止用户使用,只限专业技术人 员使用,功能是:使用该选项时,gsql可以连接到备机,

用于校验主备机数据的一致性。

-

-n, --no-

libedit 关闭命令行编辑。 -

-o, -- output=FI LENAME

将所有查询输出重定向到文件FILENAME。 绝对路径或相对 路径,且满足操 作系统路径命名 规则。

-q, --

quiet 安静模式,执行时不会打印出额外信息。 缺省时gsql将打 印许多其他输出 信息。

(29)

参数 参数说明 取值范围 -s, --

single- step

单步模式运行。意味着每个查询在发往服务器之前 都要提示用户,用这个选项也可以取消执行。此选 项主要用于调试脚本。

注意使用此参数可能会暴露部分SQL语句中的敏感信息,如创 建用户语句中的password信息等,请谨慎使用。

-

-S, -- single- line

单行运行模式,这时每个命令都将由换行符结束,

像分号那样。 -

3-9 输出格式参数

参数 参数说明 取值范围

-A, --no-

align 切换为非对齐输出模式。 缺省为对齐

输出模式。

-F, --field- separator=S TRING

设置域分隔符(默认为“|”)。 -

-H, --html 打开HTML格式输出。 -

-P, -- pset=VAR[=

ARG]

在命令行上以\pset的风格设置打印选项。

说明

这里必须用等号而不是空格分隔名称和值。例如,把输出格 式设置为LaTeX,可以键入-P format=latex

-

-R, --record- separator=S TRING

设置记录分隔符。 -

-r 开启客户端操作历史记录功能。 缺省为关

闭。

-t, --tuples-

only 只打印行。 -

-T, --table-

attr=TEXT 允许声明放在HTML table标签里的选项。

使用时请搭配参数“-H,--html”,指定为HTML格式 输出。

-

-x, --

expanded 打开扩展表格式模式。 -

-z, --field- separator- zero

设置非对齐输出模式的域分隔符为空。

使用时请搭配参数“-A, --no-align”,指定为非对齐 输出模式。

-

(30)

参数 参数说明 取值范围 -0, --record-

separator- zero

设置非对齐输出模式的记录分隔符为空。

使用时请搭配参数“-A, --no-align”,指定为非对齐 输出模式。

-

-g 显示所有SQL语句和指定文件的分隔符。

说明-g参数必须和-f参数一起设置。

-

3-10 连接参数

参数 参数说明 取值范围

-h, --

host=HOSTNAM E

指定正在运行服务器的主机名或者Unix域 套接字的路径。

如果省略主机名,

gsql将通过Unix域 套接字与本地主机 的服务器相联,或 者在没有Unix域套 接字的机器上,通 过TCP/IP与 localhost连接。

-p, --port=PORT 指定数据库服务器的端口号。

可以通过port参数修改默认端口号。

默认为8000。

-U, --

username=USER NAME

指定连接数据库的用户。

说明

● 通过该参数指定用户连接数据库时,需要同 时提供用户密码用以身份验证。您可以通过 交换方式输入密码,或者通过-W参数指定 密码。

● 用户名中包含有字符$,需要在字符$前增加 转义字符才可成功连接数据库。

字符串。默认使用 与当前操作系统用 户同名的用户。

-W, --

password=PASS WORD

当使用-U参数连接远端数据库时,可通过 该选项指定密码。

说明用户密码中包含特殊字符“\”和"`"时,需要增 加转义字符才可成功连接数据库。

如果用户未输入该参数,但是数据库连接需要 用户密码,这时将出现交互式输入,请用户输 入当前连接的密码。该密码最长长度为999字 节,受限于GUC参数password max length的最 大值。

符合密码复杂度要 求。

3.5 元命令参考

介绍使用GaussDB(DWS)数据库命令行交互工具登录数据库后,gsql所提供的元命 令。所谓元命令就是在gsql里输入的任何以不带引号的反斜杠开头的命令。

(31)

注意事项

● 一个gsql元命令的格式是反斜杠后面紧跟一个动词,然后是任意参数。参数命令 动词和其他参数以任意个空白字符间隔。

● 要在参数里面包含空白,必须用单引号把它引起来。要在这样的参数里包含单引 号,可以在前面加一个反斜杠。任何包含在单引号里的内容都会被进一步进行类 似C语言的替换:\n(新行)、\t(制表符)、\b(退格)、\r(回车)、\f(换 页)、\digits(八进制表示的字符)、\xdigits(十六进制表示的字符)。

● 用""包围的内容被当做一个命令行传入shell。该命令的输出(删除了结尾的新 行)被当做参数值。

● 如果不带引号的参数以冒号(:)开头,它会被当做一个gsql变量,并且该变量的 值最终会成为真正的参数值。

● 有些命令以一个SQL标识的名称(比如一个表)为参数。这些参数遵循SQL语法关 于双引号的规则:不带双引号的标识强制转换成小写,而双引号保护字母不进行 大小写转换,并且允许在标识符中使用空白。在双引号中,成对的双引号在结果 名字中分析成一个双引号。比如,FOO"BAR"BAZ解析成fooBARbaz;而

"Aweird""name"解析成A weird"name。

● 对参数的分析在遇到另一个不带引号的反斜杠时停止。这里会认为是一个新的元 命令的开始。特殊的双反斜杠序列(\\)标识参数的结尾并将继续分析后面的SQL 语句(如果存在)。这样SQL和gsql命令可以自由的在一行里面混合。但是在任何 情况下,一条元命令的参数不能延续超过行尾。

元命令

元命令的详细说明请参见表3-11、表3-12、表3-13、表3-14、表3-16、表3-18、表

3-19、表3-20和表3-22。

须知

以下命令中所提到的FILE代表文件路径。此路径可以是绝对路径(如/home/gauss/

file.txt),也可以是相对路径(file.txt,file.txt会默认在用户执行gsql命令所在的路径 下创建)。

3-11 一般的元命令

参数 参数说明 取值范围

\copyright 显示GaussDB(DWS)的版本和版权信息。 -

\g [FILE] or ; 执行查询(并将结果发送到文件或管

道)。 -

\h(\help)

[NAME] 给出指定SQL语句的语法帮助。 如果没有给出NAME,

gsql将列出可获得帮助 的所有命令。如果 NAME是一个星号

(*),则显示所有 SQL语句的语法帮助。

(32)

参数 参数说明 取值范围

\parallel [on

[num]|off] 控制并发执行开关。

● on:打开控制并发执行开关,且最大并 发数为num。

● off:关闭控制并发执行开关。

说明

● 不支持事务中开启并发执行以及并发中开启 事务。

● 不支持\d这类元命令的并发。

● 并发select返回结果混乱问题,此为客户可 接受,core、进程停止响应不可接受。

● 不推荐在并发中使用set语句,否则导致结 果与预期不一致。

● 不支持创建临时表!如需使用临时表,需要 在开启parallel之前创建好,并在parallel内 部使用。parallel内部不允许创建临时表。

● \parallel执行时最多会启动num个独立的 gsql进程连接服务器。

● \parallel中所有作业的持续时间不能超过 session_timeout,否则可能会导致并发执行 过程中断连。

num的默认值:

1024。

须知

● 服务器能接受的最大 连接数受max_connection及 当前已有连接数限 制。

● 设置num时请考虑服 务器当前可接受的实 际连接数合理指定。

\q [value] 退出gsql程序。在一个脚本文件里,只在 脚本终止的时候执行。退出码可由value值 决定。

-

3-12 查询缓存区元命令

参数 参数说明

\e [FILE] [LINE] 使用外部编辑器编辑查询缓冲区(或者文件)。

\ef [FUNCNAME [LINE]] 使用外部编辑器编辑函数定义。如果指定了LINE

(即行号),则光标会指到函数体的指定行。

\p 打印当前查询缓冲区到标准输出。

\r 重置(或清空)查询缓冲区。

\w FILE 将当前查询缓冲区输出到文件。

(33)

3-13 输入/输出元命令

参数 参数说明

\copy { table [ ( column_list ) ] | ( query ) } { from | to }

{ filename | stdin | stdout | pstdin

| pstdout } [ with ] [ binary ] [ oids ] [ delimiter [ as ]

'character' ] [ null [ as ] 'string' ] [ csv [ header ] [ quote [ as ] 'character' ] [ escape [ as ] 'character' ] [ force quote column_list | * ] [ force not null column_list ] ]

在任何psql客户端登录数据库成功后可以执行 导入导出数据, 这是一个运行SQL COPY命令 的操作,但不是读取或写入指定文件的服务 器,而是读取或写入文件,并在服务器和本地 文件系统之间路由数据。 这意味着文件的可访 问性和权限是本地用户的权限,而不是服务器 的权限,并且不需要数据库初始化用户权限。

说明\COPY只适合小批量,格式良好的数据导入,容错能 力较差。导入数据应优先选择GDS或COPY。

\echo [STRING] 把字符串写到标准输出。

\i FILE 从文件FILE中读取内容,并将其当作输入,执 行查询。

\i+ FILE KEY 执行加密文件中的命令。

\ir FILE 和\i类似,只是相对于存放当前脚本的路径。

\ir+ FILE KEY 和\i+类似,只是相对于存放当前脚本的路径。

\o [FILE] 把所有的查询结果发送到文件里。

\qecho [STRING] 把字符串写到查询结果输出流里。

说明

表3-14中的选项S表示显示系统对象,+表示显示对象附加的描述信息。PATTERN用来指定要被 显示的对象名称。

3-14 显示信息元命令

参数 参数说明 取值范围 示例

\d[S+] 列出当前search_path中模式 下所有的表、视图和序列。

当search_path中不同模式存 在同名对象时,只显示 search_path中位置靠前模式 下的同名对象。

- 列出当前

search_path中模 式下所有的表、视 图和序列。

\d

\d[S+]

NAME 列出指定表结构、视图结构

和索引的结构。 - 假设存在表a,列

出指定表a的表结 构。 \dtable+ a

(34)

参数 参数说明 取值范围 示例

\d+[PATTER N]

列出所有表、视图和索引。 如果声明了

PATTERN,只显示 名字匹配PATTERN 的表、视图和索 引。

列出所有名称以f开 头的表、视图和索 引。\d+ f*

\da[S]

[PATTER N]

列出所有可用的聚集函数,

以及它们操作的数据类型和 返回值类型。

如果声明了

PATTERN,只显示 名字匹配PATTERN 的聚集函数。

列出所有名称以f开 头可用的聚集函 数,以及它们操作 的数据类型和返回 值类型。\da f*

\db[+]

[PATTER N]

列出所有可用的表空间。 如果声明了

PATTERN,只显示 名字匹配PATTERN 的表空间。

列出所有名称以p 开头的可用表空 间。\db p*

\dc[S+]

[PATTER N]

列出所有字符集之间的可用 转换。

如果声明了

PATTERN,只显示 名字匹配PATTERN 的转换。

列出所有字符集之 间的可用转换。

\dc *

\dC[+]

[PATTER N]

列出所有类型转换。 如果声明了

PATTERN,只显示 名字匹配PATTERN 的转换。

列出所有名称以c 开头的类型转换。

\dC c*

\dd[S]

[PATTER N]

显示所有匹配PATTERN的描 述。

如果没有给出参 数,则显示所有可 视对象。“对象”

包括:聚集、函 数、操作符、类 型、关系(表、视 图、索引、序列、

大对象)、规则。

列出所有可视对 象。\dd

\ddp[PATTER N]

显示所有默认的使用权限。 如果指定了

PATTERN,只显示 名字匹配PATTERN 的使用权限。

列出所有默认的使 用权限。\ddp

\dD[S+]

[PATTER N]

列出所有可用域。 如果声明了

PATTERN,只显示 名字匹配PATTERN 的域。

列出所有可用域。

\dD

\ded[+]

[PATTER N]

列出所有的Data Source对 象。

如果声明了

PATTERN,只显示 名字匹配PATTERN 的对象。

列出所有的Data Source对象。

\ded

(35)

参数 参数说明 取值范围 示例

\det[+]

[PATTER N]

列出所有的外部表。 如果声明了

PATTERN,只显示 名字匹配PATTERN 的表。

列出所有的外部 表。\det

\des[+]

[PATTER N]

列出所有的外部服务器。 如果声明了

PATTERN,只显示 名字匹配PATTERN 的服务器。

列出所有的外部服 务器。\des

\deu[+]

[PATTER N]

列出用户映射信息。 如果声明了

PATTERN,只显示 名字匹配PATTERN 的信息。

列出用户映射信 息。\deu

\dew[+]

[PATTER N]

列出封装的外部数据。 如果声明了

PATTERN,只显示 名字匹配PATTERN 的数据。

列出封装的外部数 据。\dew

\df[ant w][S+]

[PATTER N]

列出所有可用函数,以及它 们的参数和返回的数据类 型。a代表聚集函数,n代表 普通函数,t代表触发器,w 代表窗口函数。

如果声明了

PATTERN,只显示 名字匹配PATTERN 的函数。

列出所有可用函 数,以及它们的参 数和返回的数据类 型。\df

\dF[+]

[PATTER N]

列出所有的文本搜索配置信 息。

如果声明了

PATTERN,只显示 名字匹配PATTERN 的配置信息。

列出所有的文本搜 索配置信息。

\dF+

\dFd[+]

[PATTER N]

列出所有的文本搜索字典。 如果声明了

PATTERN,只显示 名字匹配PATTERN 的字典。

列出所有的文本搜 索字典。\dFd

\dFp[+]

[PATTER N]

列出所有的文本搜索分析 器。

如果声明了

PATTERN,只显示 名字匹配PATTERN 的分析器。

列出所有的文本搜 索分析器。

\dFp

\dFt[+]

[PATTER N]

列出所有的文本搜索模板。 如果声明了

PATTERN,只显示 名字匹配PATTERN 的模板。

列出所有的文本搜 索模板。\dFt

\dg[+]

[PATTER N]

列出所有数据库角色。

说明

因为用户和群组的概念被统一为 角色,所以这个命令等价于

\du。为了和以前兼容,所以保 留两个命令。

如果指定了

PATTERN,只显示 名字匹配PATTERN 的角色。

列出名字为‘j_e’

所有数据库角色。

\dg j?e

(36)

参数 参数说明 取值范围 示例

\dl \lo_list的别名,显示一个大

对象的列表。 - 列出所有的大对

象。\dl

\dL[S+]

[PATTER N]

列出可用的程序语言。 如果指定了

PATTERN,只列出 名字匹配PATTERN 的语言。

列出可用的程序语 言。\dL

\dn[S+]

[PATTER N]

列出所有的模式(名字空

间)。 如果声明了

PATTERN,只列出 名字匹配PATTERN 的模式名。缺省 时,只列出用户创 建的模式。

列出所有名称以d 开头的模式以及相 关信息。 \dn+ d*

\do[S]

[PATTER N]

列出所有可用的操作符,以 及它们的操作数和返回的数 据类型。

如果声明了

PATTERN,只列出 名字匹配PATTERN 的操作符。缺省 时,只列出用户创 建的操作符。

列出所有可用的操 作符,以及它们的 操作数和返回的数 据类型。\do

\dO[S+]

[PATTER N]

列出排序规则。 如果声明了

PATTERN,只列出 名字匹配PATTERN 的规则。缺省时,

只列出用户创建的 规则。

列出排序规则。

\dO

\dp[PATTER N]

列出一列可用的表、视图以 及相关的权限信息。

\dp显示结果如下:

rolename=xxxx/yyyy --赋予一个角色 的权限=xxxx/yyyy --赋予public的权限

xxxx表示赋予的权限,yyyy表 示授予这个权限的角色。权 限的参数说明请参见表

3-15。

如果指定了

PATTERN,只列出 名字匹配PATTERN 的表、视图。

列出一列可用的 表、视图以及相关 的权限信息。

\dp

\drds [PATTER N1[PATTER N2]]

列出所有修改过的配置参 数。这些设置可以是针对角 色的、针对数据库的或者同 时针对两者的。PATTERN1和 PATTERN2表示要列出的角色 PATTERN和数据库

PATTERN。

如果声明了

PATTERN,只列出 名字匹配PATTERN 的规则。缺省或指 定*时,则会列出所 有设置。

列出数据库所有修 改过的配置参数。

\drds *

\dT[S+]

[PATTER N]

列出所有的数据类型。 如果指定了

PATTERN,只列出 名字匹配PATTERN 的类型。

列出所有的数据类 型。\dT

(37)

参数 参数说明 取值范围 示例

\du[+]

[PATTER N]

列出所有数据库角色。

说明

因为用户和群组的概念被统一为 角色,所以这个命令等价于

\dg。为了和以前兼容,所以保 留两个命令。

如果指定了

PATTERN,则只列 出名字匹配

PATTERN的角色。

列出所有数据库角 色。\du

\dE[S+]

[PATTER N]

\di[S+]

[PATTER N]

\ds[S+]

[PATTER N]

\dt[S+]

[PATTER N]

\dv[S+]

[PATTER N]

这一组命令,字母E,i,s,t 和v分别代表着外部表,索 引,序列,表和视图。可以 以任意顺序指定其中一个或 者它们的组合来列出这些对 象。例如:\dit列出所有的索 引和表。在命令名称后面追 加+,则每一个对象的物理尺 寸以及相关的描述也会被列 出。

说明

本版本暂时不支持序列。

如果指定了

PATTERN,只列出 名称匹配该

PATTERN的对象。

默认情况下只会显 示用户创建的对 象。通过PATTERN 或者S修饰符可以 把系统对象包括在 内。

列出所有的索引和 视图。\div

\dx[+]

[PATTER N]

列出安装数据库的扩展信 息。

如果指定了

PATTERN,则只列 出名字匹配

PATTERN的扩展信 息。

列出安装数据库的 扩展信息。

\dx

\l[+] 列出服务器上所有数据库的 名字、所有者、字符集编码 以及使用权限。

- 列出服务器上所有

数据库的名字、所 有者、字符集编码 以及使用权限。

\l

\sf[+]

FUNCN AME

显示函数的定义。

说明

对于带圆括号的函数名,需要在 函数名两端添加双引号,并且在 双引号后面加上参数类型列表。

参数类型列表两端添加圆括号。

- 假设存在函数

function_a和函数 名带圆括号的函数 func()name,列出 函数的定义。

\sf function_a

\sf "func()name"(argtype1, argtype2)

\z[PATTER N]

列出数据库中所有表、视图 和序列,以及它们相关的访 问特权。

如果给出任何 pattern ,则被当 成一个正则表达 式,只显示匹配的 表、视图、序列。

列出数据库中所有 表、视图和序列,

以及它们相关的访 问特权。\z

(38)

3-15 权限的参数说明

参数 参数说明

r SELECT:允许对指定的表、视图读取数据。

w UPDATE:允许对指定表更新字段。

a INSERT:允许对指定表插入数据。

d DELETE:允许删除指定表中的数据。

D TRUNCATE:允许清理指定表中的数据。

x REFERENCES:允许创建外键约束。

t TRIGGER:允许在指定表上创建触发器。

X EXECUTE:允许使用指定的函数,以及利用这些函数实现的 操作符。

U USAGE:

● 对于过程语言,允许用户在创建函数时,指定过程语 言。

● 对于模式,允许访问包含在指定模式中的对象。

● 对于序列,允许使用nextval函数。

C CREATE:

● 对于数据库,允许在该数据库里创建新的模式。

● 对于模式,允许在该模式中创建新的对象。

● 对于表空间,允许在其中创建表,以及允许创建数据库 和模式的时候把该表空间指定为其缺省表空间。

c CONNECT:允许用户连接到指定的数据库。

T TEMPORARY:允许创建临时表。

A ANALYZE|ANALYSE:允许分析表。

arwdDxtA ALL PRIVILEGES:一次性给指定用户/角色赋予所有可赋予 的权限。

* 给前面权限的授权选项。

3-16 格式化元命令

参数 参数说明

\a 对齐模式和非对齐模式之间的切换。

\C [STRING] 把正在打印的表的标题设置为一个查询的结果或者取 消这样的设置。

\f [STRING] 对于不对齐的查询输出,显示或者设置域分隔符。

(39)

参数 参数说明

\H ● 若当前模式为文本格式,则切换为HTML输出格

式。

● 若当前模式为HTML格式,则切换回文本格式。

\pset NAME [VALUE] 设置影响查询结果表输出的选项。NAME的取值见表

3-17。

\t [on|off] 切换输出的字段名的信息和行计数脚注。

\T [STRING] 指定在使用HTML输出格式时放在table标签里的属 性。如果参数为空,不设置。

\x [on|off|auto] 切换扩展行格式。

3-17 可调节的打印选项

选项 选项说明 取值范围

border value必须是一个数字。通常这 个数字越大,表的边界就越宽 线就越多,但是这个取决于特 定的格式。

● 在HTML格式下,取值范围为 大于0的整数。

● 在其他格式下,取值范围:

– 0:无边框 – 1:内部分隔线 – 2:台架 expanded (或

x) 在正常和扩展格式之间切换。 ● 当打开扩展格式时,查询结 果用两列显示,字段名称在 左、数据在右。这个模式在 数据无法放进通常的"水 平"模式的屏幕时很有用。

● 在正常格式下,当查询输出 的格式比屏幕宽时,用扩展 格式。正常格式只对aligned 和wrapped格式有用。

fieldsep 声明域分隔符来实现非对齐输 出。这样就可以创建其他程序 希望的制表符或逗号分隔的输 出。要设置制表符域分隔符,

键入\pset fieldsep '\t'。缺省域 分隔符是 '|' (竖条符)。

-

fieldsep_zero 声明域分隔符来实现非对齐输

出到零字节。 -

footer 用来切换脚注。 -

(40)

选项 选项说明 取值范围 format 设置输出格式。允许使用唯一

缩写(这意味着一个字母就够 了)。

取值范围:

● unaligned:写一行的所有列 在一条直线上中,当前活动 字段分隔符分隔。

● aligned:此格式是标准的,

可读性最好的文本输出。

● wrapped:类似aligned,但 是包装跨行的宽数据值,使 其适应目标字段的宽度输 出。

● html:把表输出为可用于文 档里的对应标记语言。输出 不是完整的文档。

● latex:把表输出为可用于文 档里的对应标记语言。输出 不是完整的文档。

● troff-ms:把表输出为可用于 文档里的对应标记语言。输 出不是完整的文档。

null 打印一个字符串,用来代替一

个null值。 缺省是什么都不打印,这样很容

易和空字符串混淆。

numericlocale 切换分隔小数点左边的数值的

区域相关的分组符号。 ● on:显示指定的分隔符。

● off:不显示分隔符。

忽略此参数,显示默认的分隔 符。

pager 控制查询和gsql帮助输出的分 页器。如果设置了环境变量 PAGER,输出将被指向到指定 程序,否则使用系统缺省。

● on:当输出到终端且不适合 屏幕显示时,使用分页器。

● off:不使用分页器。

● always:当输出到终端无论 是否符合屏幕显示时,都使 用分页器。

recordsep 声明在非对齐输出格式时的记

录分隔符。 -

recordsep_zero 声明在非对齐输出到零字节时

的记录分隔符。 -

tableattr(或

T) 声明放在html输出格式中 HTML table标签的属性(例 如:cellpadding或bgcolor)。

注意:这里可能不需要声明 border,因为已经在\pset border里用过了。如果没有给 出value,则不设置表的属性。

-

數據

表 3-1 gsql 高级特性 特性名称 描述
表 3-2 特殊变量设置
表 3-7 常用参数 参数 参数说明 取值范围 -c,  --command=CO MMAND 声明gsql要执行一条字符串命令然后退出。  --C,  --set-file=FILENAME 使用文件作为命令源而不是交互式输入, gsql处理完文件后不退出,继续处理其他内 容。 绝对路径或相对路径,且满足操作系统路径命名规则。 -d,  --dbname=DBNA ME 指定想要连接的数据库名称。 字符串。 -D,  --dynamic-param 用于控制执行SQL语句设置变量和${}变量引用方式,具体
表 3-8 输入和输出参数 参数 参数说明 取值范围 -a,  --echo-all 在读取行时向标准输出打印所有内容。 注意 使用此参数可能会暴露部分SQL语句中的敏感信息,如创 建用户语句中的password信息等,请谨慎使用。  e,  -- echo-queries 把所有发送给服务器的查询同时回显到标准输出。注意 使用此参数可能会暴露部分SQL语句中的敏感信息,如创 建用户语句中的password信息等,请谨慎使用。  E,  -- echo-hidden 回显由\d和其他反斜杠命令生成的实际查询
+7

參考文獻

相關文件

主要指标 单位 参考期.

主要指标 单位 参考期.

主要指标 单位 参考期.

主要指标 单位 参考期.

主要指标 单位 参考期.

主要指标 单位 参考期.

主要指标 单位 参考期.

主要指标 单位 参考期.