返回首页

gbase数据、南大通用产品文档:GBase8a

更新日期:2024年09月11日

GBase 8t 到GBase 8t 增量同步

GBase RTSync 同步工具手册
- 102 -
南大通用数据技术股份有限公司
下面我们通过三个示例来分别说明GBase 8t 到GBase 8t 的库级别同步、
表级别同步和列级同步。
在这三个示例中,源数据库为GBase 8t,目标数据库为GBase 8t 数据库,
消息队列为Kafka 集群,消息队列存储的数据格式为PUREDATA。
同步环境信息如下:
源数据库信息:
IP 为192.168.5.4;
数据库用户名为informix,
密码为1;
数据库test,表为t3,列为col1、col2、col3。
目标数据库信息:IP 为192.168.5.5;数据库用户名为informix,密码为
1;数据库为testdb,表为t4,列为a、b、c。
Kafka 集群信息:IP 为192.168.5.11、192.168.5.12;用户名为root,密
码为root。
读数据组件信息:IP 为192.168.5.1;用户名为root,密码为root。
写数据组件信息:IP 为192.168.5.2;用户名为root,密码为root。
管理组件信息:IP 为192.168.5.3;用户名为root,密码为root。

collect.ec 示例程序说明如何使用集合变量来访问 LIST、SET 和 MULTISET 列。该
SELECT 语句被认为是静态的,因为当编写程序时,确定它访问的列。
/*
**
** Sample use of collections in ESQL/C.
**
** Statically determined LIST, SET, and MULTISET collection
types.
*/

GBase 8s ESQL/C 编程指南
南大通用数据技术股份有限公司
- 441 -


#include

static void print_collection(
const char *tag,
EXEC SQL BEGIN DECLARE SECTION;
parameter client collection c
EXEC SQL END DECLARE SECTION;
)
{
EXEC SQL BEGIN DECLARE SECTION;
int4 value;
EXEC SQL END DECLARE SECTION;
mint item = 0;

EXEC SQL WHENEVER ERROR STOP;
printf("COLLECTION: %s\n", tag);
EXEC SQL DECLARE c_collection CURSOR FOR
SELECT * FROM TABLE(:c);
EXEC SQL OPEN c_collection;
while (sqlca.sqlcode == 0)
{
EXEC SQL FETCH c_collection INTO :value;
if (sqlca.sqlcode != 0)
break;
printf("\tItem %d, value = %d\n", ++item, value);
}
EXEC SQL CLOSE c_collection;
EXEC SQL FREE c_collection;
}

mint main(int argc, char **argv)
{

GBase 8s ESQL/C 编程指南
南大通用数据技术股份有限公司
- 442 -

EXEC SQL BEGIN DECLARE SECTION;
client collection list (integer not null) lc1;
client collection set (integer not null) sc1;
client collection multiset (integer not null) mc1;
char *dbase = "stores7";
mint seq;
char *stmt1 =
"INSERT INTO t_collections VALUES(0, "
"'LIST{-1,0,-2,3,0,0,32767,249}', 'SET{-1,0,-2,3}', "
"'MULTISET{-1,0,0,-2,3,0}') ";
EXEC SQL END DECLARE SECTION;

if (argc > 1)
dbase = argv[1];
EXEC SQL WHENEVER ERROR STOP;
printf("Connect to %s\n", dbase);
EXEC SQL connect to :dbase;

EXEC SQL CREATE TEMP TABLE t_collections
(
seq serial not null,
l1 list (integer not null),
s1 set (integer not null),
m1 multiset(integer not null)
);
EXEC SQL EXECUTE IMMEDIATE :stmt1;

EXEC SQL ALLOCATE COLLECTION :lc1;
EXEC SQL ALLOCATE COLLECTION :mc1;
EXEC SQL ALLOCATE COLLECTION :sc1;

EXEC SQL DECLARE c_collect CURSOR FOR
SELECT seq, l1, s1, m1 FROM t_collections;

GBase 8s ESQL/C 编程指南
南大通用数据技术股份有限公司
- 443 -

EXEC SQL OPEN c_collect;

EXEC SQL FETCH c_collect INTO :seq, :lc1, :sc1, :mc1;
EXEC SQL CLOSE c_collect;
EXEC SQL FREE c_collect;

print_collection("list/integer", lc1);
print_collection("set/integer", sc1);
print_collection("multiset/integer", mc1);

EXEC SQL DEALLOCATE COLLECTION :lc1;
EXEC SQL DEALLOCATE COLLECTION :mc1;
EXEC SQL DEALLOCATE COLLECTION :sc1;

puts("OK");
return 0;
}

ifx_lo_def_create_spec() 函数分配并初始化 LO-specification 结构。
语法

mint ifx_lo_def_create_spec(LO_spec)
ifx_lo_create_spec_t **LO_spec;
LO_spec
指向指向包含初始化的字段的新的 LO-specification 结构的指针的指针。

用法
ifx_lo_def_create_spec() 函数创建并初始化新的 LO-specification 结构
ifx_lo_create_spec_t。ifx_lo_def_create_spec() 函数以恰当的空值初始化新的
ifx_lo_create_spec_t 结构,
并将它的地址放置在 LO_spec 指针中。
在数据库服务器存储该
大对象时,数据库服务器将空值翻译为应该用于存储特征的系统指定的缺省含义。
由于 ifx_lo_def_create_spec() 函数为 ifx_lo_create_spec_t 结构分配内存,因此,当
您停止使用该结构时,您必须调用 ifx_lo_spec_free() 函数来释放内存。
返回代码
0
函数成功。
<0
函数不成功,且返回值指示失败的原因。