返回首页

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

更新日期:2024年09月11日

功能说明
GBase 8a MPP Cluster 提供数据远程导出功能,
即把数据从集群服务器导出到集群
客户端所在的机器,导出后的数据为文本文件。
语法格式
rmt:select_syntax INTO OUTFILE 'file_path' [OUTFILE_OPTION];
表5- 159 参数说明
字段名称
含义说明
file_path
保存导出数据的路径及文件名。
OUTFILE_OPTION
数据导出的规则。
表5- 160 OUTFILE_OPTION 参数说明
字段名称
含义说明

GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-09-15)
南大通用数据技术股份有限公司
1251
字段名称
含义说明
FIELDS/COLUMNS
TERMINATED BY
字段分隔符,支持多个字符,如果不指定分隔符则默认值
“\t”,即TAB 键。
FIELDS/COLUMNS
[OPTIONALLY]
ENCLOSED BY
字段包围符,
可以自行指定单个字符为字段包围符,
指定多
个字符时报错。
支持OPTIONALLY 选项,加OPTIONALLY 选项时仅对字
符串类型起作用,否则对所有字段都起作用。
默认为无字段包围符。
FIELDS/COLUMNS
ESCAPED BY
转义标识符,
可以自行指定单个字符为转义标识符,
指定多
个字符时报错,默认为“\”,默认值在语句中写为:FIELDS
ESCAPED BY '\\'。
LINES TERMINATED
BY
行分隔符,支持多个字符,默认为“\n”。
LINES STARTING BY
行起始符,支持多个字符,默认为“”,即为空。
FIELDS/COLUMNS
[OPTIONALLY]
DOUBLE_ENCLOSED
BY
字段包含符自转义,该参数包含上面参数(字段包围符)的
所有功能;但额外的作用是,当转义符设置为空时,如果某
字段满足使用字段包围符的条件,
且该字段中还有与字段包
围符相同的字符,则将该字符通过双写的方式自转义。
NULL_VALUE
空值标识符,支持多个字符,默认为“\N”。
CHARACTER SET
指定导出文件的字符集,支持GBK 和UTF8 编码,不写默
认导出和源表字符集保持一致。
FIELDS/COLUMNS
LENGTH
在使用定长模式导出时,
用于设定字段长度的参数。
定长格
式数据导出时,
设置每个字段的长度,
多个字段之间用逗号
分隔,该参数不能和列分隔符以及包围符混用。
WITH HEAD
WITH HEAD 为可选参数,用户输入该参数时,表示远程导
出数据文件时带有表头信息。
用户忽略该参数时,
表示远程
导出数据文件时不带表头信息,
与现有导出工具的行为保持
一致。
WITH HEAD 语法约束:

对于表头导出功能,当用户指定转义字符时,表
头信息不作转义处理;

表头的导出只支持express 引擎表,其他类型不
作保证;

GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-09-15)
南大通用数据技术股份有限公司
1252
注意

“rmt:”与select_syntax 之间不能有空格。

file_path,以及FIELD_OPTION 中的字段分隔符,字段包围符,转
义标识符等均必须用单引号“'”包围,否则无法正常导出数据。

远程导出不支持顶层查询是UNION 类查询。

远程导出的目标文件如果已经在本地存在,则不能通过select
@@error_count 来获得错误数,
原因为文件是否存在由客户端判断,
而@@error_count 是服务端变量。

ifx_int8cvflt() 函数将 C float 类型数值转换为 int8 类型数值。
语法

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

mint ifx_int8cvflt(flt_val, int8_val)
double flt_val;
ifx_int8_t *int8_val;
flt_val
ifx_int8cvflt() 要将其转换为 int8 类型值的 float 值。
int8_val
指向 ifx_int8cvflt() 放置转换的结果处的 int8 结构的指针。

返回代码
0
转换成功。
<0
转换失败。

示例
demo 目录中的文件 int8cvflt.ec 包含下列样例程序。
/*
* ifx_int8cvflt.ec *
The following program converts two floats to INT8 types and displays the results.
*/

#include

EXEC SQL include "int8.h";

char result[41];

main()
{
mint x;
ifx_int8_t num;


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

printf("IFX_INT8CVFLT Sample ESQL Program running.\n\n");

printf("Float 1 = 12944.321\n");

/* Note that in the following conversion, the digits to the right of the decimal are ignored.
*/

if (x = ifx_int8cvflt(12944.321, #))
{
printf("Error %d in converting float1 to INT8\n", x);
exit(1);
}

/* Convert int8 to ascii to display value. */

if (x = ifx_int8toasc(#, result, sizeof(result)))
{
printf("Error %d in converting INT8 to string\n", x);
exit(1);
}
result[40] = '\0';
printf(" The INT8 type value is = %s\n", result);
printf("Float 2 = -33.43\n");

/* Note that in the following conversion, the digits to the right of the decimal are ignored.
*/

if (x = ifx_int8cvflt(-33.43, #))
{
printf("Error %d in converting float2 to INT8\n", x);
exit(1);
}
if (x = ifx_int8toasc(#, result, sizeof(result)))

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

{
printf("Error %d in converting INT8 to string\n", x);
exit(1);
}
result[40] = '\0';
printf(" The second INT8 type value is = %s\n", result);

printf("\nIFX_INT8CVFLT Sample Program over.\n\n");
exit(0);
}
输出

IFX_INT8CVFLT Sample ESQL Program running.

Float 1 = 12944.321
The INT8 type value is = 12944
Float 2 = -33.43
The second INT8 type value is = -33
IFX_INT8CVFLT Sample Program over.

使用 STACKSIZE 配置参数来指定数据库服务器用户线程的堆栈大小。
onconfig.std 值
STACKSIZE 32,32 位数据库服务器
STACKSIZE 64,64 位数据库服务器

32 至由数据库服务器配置和可用内存量确定的限度
单位
KB
生效
编辑 onconfig 文件并重启数据库服务器之后。
当您通过运行 onmode -wf 命令在 onconfig 文件中动态地重置该值时。
当您通过运行 onmode -wm 命令重置内存中的该值时。
用法
STACKSIZE 的值没有上限,但设置过大的值会浪费虚拟内存空间并可导致交换空间问题。
对于 32 位平台,
对非递归的数据库活动而言,
32
KB 的缺省 STACKSIZE 值足够。
对于 64
位平台,推荐的 STACKSIZE 值是 64
KB。当数据库服务器执行递归的数据库任务时,例如
在一些 SPL 例程中,数据库服务器检查堆栈大小溢出的可能性并自动地扩展堆栈。
用户线程执行用户定义的例程。
要增加一个特定例程的堆栈大小,
请在 CREATE
FUNCTION 语
句上使用 stack 修饰符。
警告: 设置 STACKSIZE 的值过低可导致堆栈溢出,虽未定义其结果,但其结果通常是不
好的。