返回首页

gbase数据、南大通用产品文档:GBase8a字符型数据的转义规则

更新日期:2024年09月11日

字符型数据类型如下表所示:
字符型数据类型
DATE
DATETIME
TIMESTAMP
TIME
CHAR
VARCHAR
BLOB
TEXT
满足下列判断条件之一,则字符x 需要进行转义:
字符x 等于转义符首字符。
字符x 等于行分隔符首字符(FIELDS TERMINATED BY)。
字符x 等于“\0”。
enclosed 的值为TURE,并且字符x 等于FIELDS ENCLOSED BY 设置的字段包围

GBase UP 产品手册 5 数据库管理指南
文档版本04(2021-04-21) 南大通用数据技术股份有限公司 233
符首字符。
enclosed 的值不为TURE,并且字符x 等于FIELDS TERMINATED BY 设置的字段
分隔符首字符。
说明:enclosed 值的判定规则请参见“判定enclosed 的值是否为TRUE”小节。
转义规则的说明:
正常情况下,使用FIELDS ESCAPED BY 关键字定义的转义符对字符进行转义;
如果指定FIELDS ENCLOSED BY 关键字的值为“n、t、r、b、0、Z、N”之一,
并且字符与“字段包围符首字符”相同时,使用字符本身对自己进行转义。
示例中用到的表及数据:
DROP TABLE IF EXISTS t;
CREATE TABLE t(n int, v1 varchar(5), v2 varchar(8));
INSERT INTO t VALUES(102, 'ab', 'xmny');
示例:
SELECT * FROM t INTO OUTFILE '/home/gbase/temp/1.txt' FIELDS ENCLOSED BY 'n';
查看导出结果,“xmny”中字符“n”使用其本身进行了转义:
$ cat 1.txt
n102n nabn nxmnnyn
如果指定FIELDS ENCLOSED BY 关键字的值不属于“n、t、r、b、0、Z、N”之
一时,则采用转义符进行转义的方式。
示例:
SELECT * FROM t INTO OUTFILE '/home/gbase/temp/2.txt' FIELDS ENCLOSED BY 'm';
查看导出结果,“xmny”中字符“m”使用默认的转义符“\”进行转义:
$ cat 2.txt
m102m mabm mx\mnym

日期/时间类型
GBase 8c 支持的日期/时间类型请参见下表。该类型的操作符和内置函数请参见5.8 时
间和日期处理函数和操作符。
如果其他的数据库时间格式和GBase 8c 数据库的时间格式不一致,可通过修改配置参
数DateStyle 值来保持一致。
名称
描述
存储空间
DATE
日期和时间。
4 字节
(兼容模式A 下
存储空间大小为8 字
节)

GBase 8c SQL 参考手册
南大通用数据技术股份有限公司
56
TIME [(p)] [WITHOUT
TIME ZONE]
只用于一日内时间。
p 表示小数点后的精度,
取值范围为0~6。
8 字节
TIME [(p)] [WITH
TIME ZONE]
只用于一日内时间,带时区。
p 表示小数点后的精度,
取值范围为0~6。
12 字节
TIMESTAMP[(p)]
[WITHOUT TIME
ZONE]
日期和时间。
p 表示小数点后的精度,
取值范围为0~6。
8 字节
TIMESTAMP[(p)]
[WITH TIME ZONE]
日期和时间,带时区。TIMESTAMP 的
别名为TIMESTAMPTZ。
p 表示小数点后的精度,
取值范围为0~6。
8 字节
SMALLDATETIME
日期和时间,不带时区。
精确到分钟,
秒位大于等于30 秒进一位。
8 字节
INTERVAL DAY (l) TO
SECOND (p)
时间间隔,X 天X 小时X 分X 秒。
l:天数的精度,取值范围为0~6。兼容
性考虑,目前未实现具体功能。
p:秒数的精度,取值范围为0~6。小数
末尾的零不显示。
16 字节
INTERVAL [FIELDS]
[ (p) ]
时间间隔。
fields:可以是YEAR,MONTH,DAY,
HOUR,MINUTE,SECOND,DAY TO
HOUR,DAY TO MINUTE,DAY TO
SECOND,HOUR TO MINUTE,HOUR
TO SECOND,MINUTE TO SECOND。
p:
秒数的精度,
取值范围为0~6,
且fields
为SECOND,
DAY TO SECOND,
HOUR
TO SECOND 或MINUTE TO SECOND
时,
参数p 才有效。
小数末尾的零不显示。
12 字节
reltime
相对时间间隔。格式为:
X years X mons X days XX:XX:XX 。
采用儒略历计时,
规定一年为365.25 天,
一个月为30 天,计算输入值对应的相对
4 字节

GBase 8c SQL 参考手册
南大通用数据技术股份有限公司
57
时间间隔,输出采用POSTGRES 格式。
abstime
日期和时间。格式为:
YYYY-MM-DD hh:mm:ss+timezone
取值范围为1901-12-13 20:45:53
GMT~2038-01-18 23:59:59 GMT,
精度为秒。
4 字节
示例
--创建表。
gbase=# CREATE TABLE date_type_tab(coll date);
CREATE TABLE
--插入数据。
gbase=# INSERT INTO date_type_tab VALUES (date '5-10-2022');
INSERT 0 1
--查看数据。
gbase=# SELECT * FROM date_type_tab;
coll
---------------------
2022-05-10 00:00:00
(1 row)
--删除表。
gbase=# DROP TABLE date_type_tab;
DROP TABLE
--创建表。
gbase=# CREATE TABLE time_type_tab (da time without time zone ,dai time with time
zone,dfgh timestamp without time zone,dfga timestamp with time zone, vbg
smalldatetime);
CREATE TABLE
--插入数据。
gbase=# INSERT INTO time_type_tab VALUES ('21:21:21','21:21:21
pst','2010-12-12','2013-12-11 pst','2003-04-12 04:05:06');
INSERT 0 1
--查看数据。
gbase=# SELECT * FROM time_type_tab;
da
|
dai
|
dfgh
|
dfga
|
vbg
----------+-------------+---------------------+------------------------+-----
----------------

GBase 8c SQL 参考手册
南大通用数据技术股份有限公司
58
21:21:21 | 21:21:21-08 | 2010-12-12 00:00:00 | 2013-12-11 16:00:00+08 |
2003-04-12 04:05:00
(1 row)
--删除表。
gbase=# DROP TABLE time_type_tab;
DROP TABLE
--创建表。
gbase=# CREATE TABLE day_type_tab (a int,b INTERVAL DAY(3) TO SECOND (4));
CREATE TABLE
--插入数据。
gbase=# INSERT INTO day_type_tab VALUES (1, INTERVAL '3' DAY);
INSERT 0 1
--查看数据。
gbase=# SELECT * FROM day_type_tab;
a |
b
---+--------
1 | 3 days
(1 row)
--删除表。
gbase=# DROP TABLE day_type_tab;
DROP TABLE
--创建表。
gbase=# CREATE TABLE year_type_tab(a int, b interval year (6));
CREATE TABLE
--插入数据。
gbase=# INSERT INTO year_type_tab VALUES(1,interval '2' year);
INSERT 0 1
--查看数据。
gbase=# SELECT * FROM year_type_tab;
a | b
---+---------
1 | 2 years
(1 row)
--删除表。
gbase=# DROP TABLE year_type_tab;
DROP TABLE

GBase 8c SQL 参考手册
南大通用数据技术股份有限公司
59

替换复合节点需要执行三次节点替换,分别替换gcware 服务、gcluster 服务和data
服务(按顺序替换)。
替换步骤

替换gcware 服务部分的步骤请参考4.2.2.3.1 章节。

替换gcluster 服务部分的步骤请参考4.2.2.3.2 章节。

替换data 服务部分的步骤请参考4.2.2.3.3 章节。
说明

替换复合节点只能使用全新节点替换,不能使用freenode 节点替换。