返回首页

gbase数据、南大通用产品文档:GBase8aOracle 到GBase 8a 获取全量任务信息接口

更新日期:2024年09月11日

URL 示例:http://192.168.4.187:8080/fulltoincrementtask/idno3
通过该接口可以获取指定源的全量同步任务信息,如上示例所示代表查看
源idno3 的全量任务信息。
调用结果:
{
"code":1, //代表执行成功,值<0 代表调用异常
"message":null, //详细信息,如果为null 说明没有错误
"requestType":"fulltoincrementtask", //记录请求类型
"id":"idno3",
//记录请求的源id
"taskProcessMap":{
//该map 记录全量任务处理表的具体进度信息
"tablesStatusMap":{
"TESTDB.TESTTABLE":"finished" //代表导出导入已完成

GBase RTSync 同步工具手册
- 62 -
南大通用数据技术股份有限公司
},
"name":"数据去重中", //代表全量已经进入到数据去重过程
"taskID":1545617604110
//任务id 号。
}
}

还可以在使用常量的 SQL 表达式中的任意位置使用 LENGTH 、USER 、CURRENT 、
SYSDATE 和 TODAY 函数。另外,可以在 SELECT 语句中包括 DBSERVERNAME 函数
来显示当前数据库所驻留的数据库服务器的名称。
还可以使用这些函数来选择全部由常量值组成的表达式或包括列数据的表达式。在一个实
例中,对于所有输出行,结果相同。
另外,
可以使用 HEX 函数返回表达式的十六进制编码,
使用 ROUND 函数来返回表达式的
四舍五入值,使用 TRUNC 函数来返回表达式的截断值。有关上述函数的更多信息,请参
阅《GBase 8s SQL 指南:语法》。

LENGTH 函数
在下列查询中,LENGTH 函数针对 company 的长度大于 15 的每个行计算组
合 fname 和 lname 列的字节数。
图: 查询
SELECT customer_num,
LENGTH (fname) + LENGTH (lname) namelength
FROM customer

GBase 8s SQL 指南:教程
南大通用数据技术股份有限公司
- 105 -
WHERE LENGTH (company) > 15;
图: 查询结果
customer_num namelength

101 11
105 13
107 11
112 14
115 11
118 10
119 10
120 10
122 12
124 11
125 10
126 12
127 10
128 11
尽管 LENGTH 函数在使用 DB-Access 时可能不是非常有用,
但用于确定程序和报告的长度
时它就非常重要。LENGTH 函数返回 CHARACTER 或 VARCHAR 字符串的剪切长度以
及 TEXT 或 BYTE 字符串中的全部字节数。
GBase 8s 还支持 CHAR_LENGTH 函数,该函数在其字符串参数中返回逻辑字符数而不是
返回字节数。该函数在单个逻辑字符可能需要多个单字节存储的语言环境中非常有用。有
关 CHAR_LENGTH 函数的更多信息,
请参阅
《GBase 8s SQL 指南:
语法》

《GBase 8s GLS
用户指南》。

USER 函数
当想要定义仅包含包括您的用户标识行的表的受限视图时,使用 USER 函数。有关如何创
建视图的信息,请参阅《GBase 8s 数据库设计和实现指南》和《 GBase 8s SQL 指南:语
法》 中的 GRANT 和 CREATE VIEW 语句。
下列查询返回执行查询的用户的用户名(登录用户名),对表中的每行重复一次。
图: 查询
SELECT * FROM cust_calls
WHERE user_id = USER;
如果当前用户的用户名是 richc,该查询仅检索 cust_calls 表中 user_id = richc 的行。

GBase 8s SQL 指南:教程
南大通用数据技术股份有限公司
- 106 -
图: 查询结果
customer_num 110
call_dtime 1998-07-07 10:24
user_id richc
call_code L
call_descr Order placed one month ago (6/7) not received.
res_dtime 1998-07-07 10:30
res_descr Checked with shipping (Ed Smith). Order sent yesterday-we
were waiting for goods from ANZ. Next time will call with
delay if necessary

customer_num 119
call_dtime 1998-07-01 15:00
user_id richc
call_code B
call_descr Bill does not reflect credit from previous order
res_dtime 1998-07-02 08:21
res_descr Spoke with Jane Akant in Finance. She found the error and
is
sending new bill to customer

TODAY 函数
TODAY 函数返回当前系统日期。如果下列查询是在当前系统日期为 1998 年 7 月 10 日
时发出的,它返回这一行。
图: 查询
SELECT * FROM orders WHERE order_date = TODAY;
图: 查询结果
order_num 1018
order_date 07/10/1998
customer_num 121
ship_instruct SW corner of Biltmore Mall
backlog n
po_num S22942
ship_date 07/13/1998
ship_weight 70.50

GBase 8s SQL 指南:教程
南大通用数据技术股份有限公司
- 107 -
ship_charge $20.00
paid_date 08/06/1998

DBSERVERNAME 和 SITENAME 函数
可以在 SELECT 语句中包含 DBSERVERNAME
(或它的同义词 SITENAME)
函数来查询
数据库服务器的名称。
可以查询 DBSERVERNAME 以找到具有行的任何表,
包括系统目录
表。
在下列查询中,
将标签 server 指定给 DBSERVERNAME 表达式并且也从 systables 系统目录
表中选择 tabid 列。此表描述数据库表,tabid 就是表标识。
图: 查询
SELECT DBSERVERNAME server, tabid
FROM systables
WHERE tabid <= 4;
图: 查询结果
server tabid

montague 1
montague 2
montague 3
montague 4
WHERE 子句限制显示的行数。否则,可能会对 systables 表的每一行显示数据库服务器名
一次。

HEX 函数
在下列查询中,HEX 函数返回 customer 中两列的十六进制格式,如下所示。
图: 查询
SELECT HEX (customer_num) hexnum, HEX (zipcode) hexzip
FROM customer;
图: 查询结果
hexnum hexzip

0x00000065 0x00016F86
0x00000066 0x00016FA5
0x00000067 0x0001705F

GBase 8s SQL 指南:教程
南大通用数据技术股份有限公司
- 108 -
0x00000068 0x00016F4A
0x00000069 0x00016F46
0x0000006A 0x00016F6F


DBINFO 函数
可以在 SELECT 与中调用 DBINFO 函数来查询下列任何信息:

与 tblspace 号或表达式对应的 dbspace 的名称

表中插入的最后一个 SERIAL 、SERIAL8 或 BIGSERIAL 值

SELECT 、
INSERT 、
DELETE 、
UPDATE 、
MERGE 、
EXECUTE FUNCTION 、
EXECUTE PROCEDURE 或 EXECUTE ROUTINE 语句处理的行数

当前会话的会话 ID

会话连接的当前的数据库的名称

INSERT 、UPDATE 或 DELETE 语句是否作为应答事务一部分正在执行

数据库服务器在其上运行的主计算机的名称

操作系统的类型和主计算机的名称

全球标准时间(UTC)格式的本地时区和当前日期和时间

对应于指定的整型列或指定的 UTC 时间值的 DATETIME 值
(作为自 1970-01-01
00:00:00+00:00 的秒数)

客户机应用程序连接至的数据库服务器的精确版本或指定完整版本字符串的组件
可以在 SQL 语句中和 SPL 例程中的任何地方使用 DBINFO 函数。
下列查询显示可以和如何使用 DBINFO 函数来找出数据库服务器在其上运行的主计算机的
名称。
图: 查询
SELECT FIRST 1 DBINFO('dbhostname') FROM systables;
图: 查询结果
(constant)

lyceum
没有 FIRST 1 子句来限制 tabid 中的值,
将对 systables 表的每一行重复数据库服务器在其上
运行的计算机的主机名。
下列查询显示可以如何使用 DBINFO 函数来找出当前数据库服务
器的完整版号和类型。

GBase 8s SQL 指南:教程
南大通用数据技术股份有限公司
- 109 -
图: 查询
SELECT FIRST 1 DBINFO('version','full') FROM systables;
有关如何使用 DBINFO 函数查找您当前数据库服务器、数据库会话或数据库的信息的更多
信息,请参阅《GBase 8s SQL 指南:语法》。

DECODE 函数
可以使用 DECODE 函数来将具有一个值的表达式转换为另一个值。DECODE 函数具有以
下格式:
DECODE(test, a, a_value, b, b_value, ..., n, n_value, exp_m )
在通常情况下,
当 a 等于 test 时 DECODE 函数返回 a_value,
当 b 等于 test 时,
返回 b_value,
当 n 等于 test 时返回 n_value 。
如果有若干表达式与 test 匹配,那么 DECODE 返回找到的第一个表达式的 n_value。如果
没有表达式与 test 匹配,
那么 DECODE 返回 exp_m;;如果没有表达式与 test 匹配并且不存
在 exp_m,那么 DECODE 返回 NULL。
限制: DECODE 函数不支持类型为 TEXT 或 BYTE 的参数。
假设包括 emp_id 和 evaluation 列的 employee 表存在。此外还假设对 employee 表执行下列
查询则返回以下所示的行。
图: 查询
SELECT emp_id, evaluation FROM employee;
图: 查询结果
emp_id evaluation

012233 great
012344 poor
012677 NULL
012288 good
012555 very good
在某些情况下,您可能想要转换一组值。例如:假设您想要将前一示例中 evaluation 列的描
述值转换为相应的数字值。
下列查询显示如何使用DECODE 函数来针对 employee 表中的每
一行将 evaluation 列中的值转换为数字值。
图: 查询
SELECT emp_id, DECODE(evaluation, "poor", 0, "fair", 25, "good",
50, "very good", 75, "great", 100, -1) AS evaluation
FROM employee;

GBase 8s SQL 指南:教程
南大通用数据技术股份有限公司
- 110 -
图: 查询结果
emp_id evaluation

012233 100
012344 0
012677 -1
012288 50
012555 75

可为 DECODE 函数的参数指定任何数据类型,只要这些参数满足以下需求:
参数 test 、a 、b 、... 、n 都具有相同的数据类型或求值为公共兼容的数据类型。
参数 a_value 、
b_value 、
... 、
n_value 都具有相同的数据类型或求值为公共兼容的数据类型。

NVL 函数
可以使用 NVL 函数将求值为 NULL 的表达式转换为您指定的值。
NVL 函数接受两个参数:
第一个参数获取要求值的表达式的名称;
第二个参数指定当第一个参数求值为 NULL 时函
数返回的值。如果第一个参数求值不为 NULL,那么函数将返回第一个参数的值。假设包
括 name 和 address列的 student 表存在。同时假设对 student 表执行以下查询。
图: 查询
SELECT name, address FROM student;
图: 查询结果
name address

John Smith 333 Vista Drive
Lauren Collier 1129 Greenridge Street
Fred Frith NULL
Susan Jordan NULL
以下是包括 NVL 函数的一个示例,
该函数为表 address 列包含 NULL 值的每一行返回一个
新值。
图: 查询
SELECT name, NVL(address, "address is unknown") AS address
FROM student;
图: 查询结果
name address

GBase 8s SQL 指南:教程
南大通用数据技术股份有限公司
- 111 -

John Smith 333 Vista Drive
Lauren Collier 1129 Greenridge Street
Fred Frith address is unknown
Susan Jordan address is unknown
可以为 NVL 函数指定任何数据类型,只要这两个参数求值为公共兼容的数据类型。
如果 NVL 函数的两个参数都求值为 NULL,那么函数返回 NULL。
GBase 8s 还支持 NULLIF 函数。该函数类似于 NVL 函数。但语义不同。如果其两个参数相
等,NULLIF 返回 NULL,或者两个参数不相等,将返回第一个参数。有关 NULLIF 函数
的更多信息,请参阅《GBase 8s SQL 指南:语法》。

您可使用 dbschema 和 DB-Access 从数据库保存模式,然后在另一数据
库中重新创建该模式。dbschema 输出文件可包含创建整个数据库的语句。
保存数据库模式并重新创建数据库:
1.
使用 dbschema 将模式保存到输出文件(例如 db.sql)

dbschema -d db > db.sql
还可使用 -ss 选项生成特定于服务器的信息:
dbschema -d db -ss > db.sql
2.
从输出文件除去有关 dbschema 的头信息(如果有的话)

3.
在输出文件的开头添加 CREATE DATABASE 语句或使用 DB-Access
来创建新数据库。
4.
使用 DB-Access 在新数据库中重新创建模式:
dbaccess - db.sql
使用 db.sql 在不同的数据库服务器上创建数据库时,
请确认数据库空
间存在。
数据库 db 和 testdb 名称不同但具有相同的模式。

5 LOAD 和 UNLOAD 语句



您可以使用 SQL LOAD 和 UNLOAD 语句来移动数据。LOAD 语句速度
较快且较易于使用,但它只接受指定的数据格式。通常可将使用 UNLOAD 语
句准备好的数据用于 LOAD 语句。
您可以使用 DB-Access 中的 UNLOAD 语句从表中将选定的行卸载到文
本文件。
UNLOAD 语句允许您在卸载数据时对其进行操作,
但它要求将数据卸载到
磁盘上的文件而非磁带。如果卸载到磁盘文件,可能需要使用 UNIX™ 、Linux
™实用程序将这些文件装入到磁带上。
要装入表,请使用 LOAD 或 dbload。要操纵正在装入的数据文件或在装
入数据库时要对其进行访问,请使用 dbload 实用程序。灵活性是以花在创建
dbload 命令文件上的时间以及较慢的执行速度为代价的。尽可能使用 LOAD
语句,它比 dbload 要快。
如果数据库包含基于标签的访问控制 (LBAC) 对象,那么只能装入或卸载
您的安全标签控制其列安全标签或行安全标签的那些行。如果要装入或卸载整
个表,那么必须具有写入/读取所有标注的行和列的必要 LBAC 凭证。有关
LBAC 对象的更多信息,
请参阅 GBase 8s 安全性能指南 和
《GBase 8s SQL 指
南:语法》