返回首页

gbase数据、南大通用产品文档:GBase8c数据库对象命名

更新日期:2024年09月11日

数据库对象命名需要满足约束:非时序表长度不超过63 个字节,时序表长度不超过53
个字符,以字母或下划线开头,中间字符可以是字母、数字、下划线、$、#。

【建议】避免使用保留或者非保留关键字命名数据库对象。
可以使用select * from pg_get_keywords()查询数据库关键字,或者在《GBase 8c
V5_3.0.0_SQL 手册》关键字章节中查看。

【建议】
避免使用双引号括起来的字符串来定义数据库对象名称,
除非需要限制数据库
对象名称的大小写。数据库对象名称大小写敏感会使定位问题难度增加。

【建议】数据库对象命名风格务必保持统一。

增量开发的业务系统或进行业务迁移的系统,建议遵守历史的命名风格。

建议使用多个单词组成,以下划线分割。

数据库对象名称建议能够望文知意,
尽量避免使用自定义缩写
(可以使用通用的术
语缩写进行命名)。例如,
在命名中可以使用具有实际业务含义的英文词汇或汉语
拼音,但规则应该在数据库实例范围内保持一致。

变量名的关键是要具有描述性,
即变量名称要有一定的意义,
变量名要有前缀标明
该变量的类型。

【建议】表对象的命名应该可以表征该表的重要特征。
例如,在表对象命名时区分该表
是普通表、临时表还是非日志表:

普通表名按照数据集的业务含义命名。

临时表以“tmp_+后缀”命名。

非日志表以“ul_+后缀”命名。

外表以“f_+后缀”命名。

不创建以redis_为前缀的数据库对象。

不创建以mlog_和以matviewmap_为前缀的数据库对象。

GBase 8c V5 开发者手册
南大通用数据技术股份有限公司
47

【建议】非时序表对象命名建议不要超过63 字节。如果过该长度内核会对表名进行截
断,从而造成和设置值不一致的现象。且在不同字符集下,可能造成字符被截断,出现
预期外的字符。

deccopy() 函数将一个 decimal 结构复制到另一个。
语法
void deccopy(source, target)
dec_t *source;
dec_t *target;
source
指向保存在源 decimal 结构中的值的指针。
target
指向目标 decimal 结构的指针。
deccopy() 函数不返回状态值。要确定复制操作成功与否,请查看 target 指向的
decimal 结构的内容。

示例
demo 目录中的文件 deccopy.ec 包含下列样例程序。
/*
* deccopy.ec *

The following program copies one DECIMAL number to another.
*/

#include

EXEC SQL include decimal;

char string1[] = "12345.6789";
char result[41];


GBase 8s ESQL/C 编程指南
南大通用数据技术股份有限公司
- 626 -
main()
{
int x;
dec_t num1, num2;

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

printf("String = %s\n", string1);
if (x = deccvasc(string1, strlen(string1), &num1))
{
printf("Error %d in converting string1 to DECIMAL\n", x);
exit(1);
}
printf("Executing: deccopy(&num1, &num2)\n");
deccopy(&num1, &num2);
if (x = dectoasc(&num2, result, sizeof(result), -1))
{
printf("Error %d in converting num2 to string\n", x);
exit(1);
}
result[40] = '\0';
printf("Destination = %s\n", result);

printf("\nDECCOPY Sample Program over.\n\n");
exit(0);
}
输出
DECCOPY Sample ESQL Program running.

String = 12345.6789
Executing: deccopy(&num1, &num2)
Destination = 12345.6789


GBase 8s ESQL/C 编程指南
南大通用数据技术股份有限公司
- 627 -
DECCOPY Sample Program over.

dbexport 实用程序支持磁盘和磁带目标选项。

元素
用途
重要注意事项
-b blocksize
指定磁带设备的块大小
(以千字节计)
无。
-f pathname
指定希望存储模式文件
的路径名
(如果要在磁带
上存储数据文件)
其他信息:
路径名可以是
完整的路径名或文件名。
如果只给出文件名,
那么
文件将存储在当前目录
中。
-o directory
指定磁盘上的目录,
dbexport 将在该目录



限制:
指定为目录名的目
录必须存在。



database.exp 目录。
该目录保
留 dbexport 为数据
库创建的数据文件和模
式文件。
-s tapesize
指定您可在磁带上存储
的数据量(以千字节计)

其他信息:
要写到磁带的末尾,
请将
tapesize 指定为 0。
如果您不指定 0,那么
最大tapesize 是 2
097 151 KB。
-t device
指定您希望存储文本文
件和可能存储模式文件
的磁带设备路径名。
-t 选项不允许您指定
远程磁带设备。

写到磁盘时,
dbexport 将在 -o 选项指定的目录中创建 database.exp 子目
录。 dbexport 实用程序为数据库中的每个表创建带 .unl 扩展名的文件。模式
文件写入文件 database.sql。 .unl 和 .sql 文件位于 database.exp 目录中。
如果没有为数据和模式文件指定目标,
将把子目录 database.exp 放置在当
前工作目录中。
将数据文件写入磁带时,
可以使用 -f 选项将模式文件存储到磁盘。
不需要
将模式文件命名为 database.sql。您可任意取名。
仅 UNIX/Linux
对于 UNIX™ 或 Linux™ 上的非 SE 数据库服务器,该命令为:
dbexport //finland/reports
以下命令将数据库 stores_demo 导出到磁带,该磁带的块大小为 16 KB
且容量为 24000 KB 。该命令还可以将模式文件写入到
/tmp/stores_demo.imp。



dbexport -t /dev/rmt0 -b 16 -s 24000 -f /tmp/stores_demo.imp
stores_demo
以下命令将同一
stores_demo
数据库导出到名为
/work/exports/stores_demo.exp
的目录。结果模式文件为
/work/exports/stores_demo.exp/stores_demo.sql。
dbexport -o /work/exports stores_demo