返回首页

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

更新日期:2024年09月11日

指定转义标识符
示例
示例1:指定单个转义标识符为“c”。
示例中所用的表及数据:
DROP TABLE IF EXISTS gs;
CREATE TABLE gs (a int DEFAULT NULL, b varchar(20) DEFAULT
NULL);
INSERT INTO gs values(1,'qwer'),(2,'asdf');
导出SQL 语句:
gbase> SELECT * FROM gs INTO OUTFILE '/home/gbase/temp/gs_e.txt'
FIELDS ESCAPED BY 'c';
Query OK, 2 rows affected
查看导出文件:
$ cat gs_e.txt
1
qwer
2
asdf
示例2:指定转义标识符为多个字符时报错。
示例中所用的表及数据:

GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-04-10)
南大通用数据技术股份有限公司
1241
DROP TABLE IF EXISTS gs;
CREATE TABLE gs (a int DEFAULT NULL, b varchar(20) DEFAULT
NULL);
INSERT INTO gs values(1,'qwer'),(2,'asdf');
导出SQL 语句:
gbase> SELECT * FROM gs INTO OUTFILE '/home/gbase/temp/gs_e.txt'
FIELDS ESCAPED BY '6c@#';
ERROR 1149 (42000): FIELDS ESCAPED STRING must be only one character

操作步骤
步骤1 切换到dbaUser 用户
(即demo.options 中的dbaUser 用户)

假定dbaUser 为gbase。

# su - gbase
步骤2 进入安装包解压后的gcinstall 目录下。
$ cd /opt/gcinstall
步骤3 执行创建命令。
gcadmin distribution

[d num] [pattern 1|2]

执行结果如下:
$ gcadmin distribution gcChangeInfo.xml p 1 d 1
gcadmin generate distribution ...

NOTE: node [192.168.105.66] is coordinator node, it shall be data node too
gcadmin generate distribution successful

生成的distribution 如下:
$ gcadmin showdistribution

Distribution ID: 1 | State: new | Total segment num: 3

Primary Segment Node IP Segment ID Duplicate Segment node IP
==================================================================
==================

GBase UP 产品手册 3 软件安装

文档版本04(2021-04-21) 南大通用数据技术股份有限公司 86
| 192.168.105.66 | 1 | 192.168.105.67
|
------------------------------------------------------------------------------------
| 192.168.105.67 | 2 | 192.168.105.68
|
------------------------------------------------------------------------------------
| 192.168.105.68 | 3 | 192.168.105.66
|
==================================================================
==================
说明

集群安装成功后,在安装包目录下会生成一个gcChangeInfo.xml 文件。

gcChangeInfo.xml 文件形式如下:









gcadmin distribution 是gcadmin 的子命令,详细说明请参考本手册中gcadmin 章节
gcadmin 命令说明。

函数说明
将参数datetime 转换为字符串,并进行格式化输出。
参数说明
表5- 12 参数说明
格式化参数


, . ; :
除了左面标准的几个,还允许用文字作为分隔符号。例如年月日日
期分隔符。用于格式化输出日期。
AD
即拉丁文Anno Domini 的简写,
表示公元,
会根据nls 的不同转换为
公元或者AD 等。
如果是公元后的日期,显示AD。
如果是公元前的日期,显示BC。
AM
上午的简写,中文环境输出为上午。
如果是上午,返回AM。

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


如果是下午,返回PM。
BC
即拉丁文Before Christ 的简写,表示公元前,会根据nls 的不同转换
为公元或者BC 等。
如果是公元后的日期,显示AD。
如果是公元前的日期,显示BC。
CC
返回世纪,以阿拉伯数字表示。
D
一周之中的第几天,返回的是序号(1~7)。
DAY
返回日期中的DAY 部分。返回的是英文全拼形式,首字母大写。
DD
同DAY,但是返回的是数字形式(01~31)。
DDD
日期中的日是一年当中的第几天,返回的是序号001~366。
DY
同DAY,但是返回的是英文形式,返回前三个字母。首字母大写。
FF[n]
就是毫秒,如果不加数字就是用默认的精度,
默认6 位精度。
1 ≤n ≤9。
只能用于timestamp 类型的。
FM
删除日期开头和结尾处的空格。
示例:FM Month
FX
固定模式全局选项。
示例:FX MONTH DD DAY
HH[12 | 24]
表示小时,默认12 小时制。
HH12,12 小时制。返回(01~12)。
HH24,24 小时制。返回(00~23)。
IW
ISO 标准的一年中的第几周(1~52,或者1~53)。
MI
返回分钟数(00~59)。
MM
返回月份,返回阿拉伯数字。
MON
返回月份,返回的是英文简写,三个英文字母,首字母大写。
MONTH
返回月份,返回的是英文全拼。首字母大写。
PM
下午的简写,中文环境输出为下午。
Q
返回季度,取值为1~4。
RM
用罗马数字表示的月份。罗马数字全部大写。
RR 或RRRR
返回2 位或者4 位年。
YY 或YYYY
返回2 位或者4 位年。
SCC
返回数字形式表示的世纪。
SS
返回秒(0~59)。
SSSSS
一天从午夜开始的累积秒数(0~86399)。
TS
返回带有AM 或者PM 的时分秒形式的时间。
W
一个月中的第几周,其算法局限在datetime 参数所属于的月份之内
而已。
WW
同IW。
示例
示例1:将NOW()转换为FORMAT 中对应的日期格式。
gbase> SELECT TO_CHAR(NOW(),'YYYY/MM/DD') FROM dual;

GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-09-15)
南大通用数据技术股份有限公司
716
+-----------------------------+
| TO_CHAR(NOW(),'YYYY/MM/DD') |
+-----------------------------+
| 2020/04/01
|
+-----------------------------+
1 row in set
gbase> SELECT TO_CHAR(NOW(),'YYYY-MM-DD') FROM dual;
+-----------------------------+
| TO_CHAR(NOW(),'YYYY-MM-DD') |
+-----------------------------+
| 2020-04-01
|
+-----------------------------+
1 row in set
gbase> SELECT TO_CHAR(NOW(),'YYYY,MM,DD') FROM dual;
+-----------------------------+
| TO_CHAR(NOW(),'YYYY,MM,DD') |
+-----------------------------+
| 2020,04,01
|
+-----------------------------+
1 row in set
gbase> SELECT TO_CHAR(CURDATE(),'YYYY;MM;DD') FROM dual;
+---------------------------------+
| TO_CHAR(CURDATE(),'YYYY;MM;DD') |
+---------------------------------+
| 2020;04;01
|
+---------------------------------+
1 row in set
gbase> SELECT TO_CHAR(NOW(),'YYYY"年"MM"月"DD"日"') FROM
dual;
+---------------------------------------+
| TO_CHAR(NOW(),'YYYY"年"MM"月"DD"日"') |
+---------------------------------------+
| 2020 年04 月01 日
|
+---------------------------------------+
1 row in set
示例2:将CURDATE()转换为FORMAT 中对应的日期格式。
gbase> SELECT TO_CHAR(CURDATE(),'AD
YYYY-MM-DD') FROM
dual;

GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-09-15)
南大通用数据技术股份有限公司
717
+-------------------------------------+
| TO_CHAR(CURDATE(),'AD
YYYY-MM-DD') |
+-------------------------------------+
| AD
2020-04-01
|
+-------------------------------------+
1 row in set
示例3:比较NOW()和将NOW()转换为“AM HH12:MI:SS” 后的格式。
gbase> SELECT NOW(),TO_CHAR(NOW(),'AM HH12:MI:SS') FROM
dual;
+---------------------+--------------------------------+
| NOW()
| TO_CHAR(NOW(),'AM HH12:MI:SS') |
+---------------------+--------------------------------+
| 2020-04-01 16:35:43 | PM 04:35:43
|
+---------------------+--------------------------------+
1 row in set
gbase> SELECT
NOW(),TO_CHAR(TIMESTAMPADD(HOUR,8,NOW()),'AM
HH12:MI:SS') AS f_FormatShow FROM dual;
+---------------------+--------------+
| NOW()
| f_FormatShow |
+---------------------+--------------+
| 2020-04-01 16:36:03 | AM 12:36:03
|
+---------------------+--------------+
1 row in set
示例4:返回CURDATE()的世纪数。
gbase> SELECT TO_CHAR(CURDATE(),'CC') FROM dual;
+-------------------------+
| TO_CHAR(CURDATE(),'CC') |
+-------------------------+
| 21
|
+-------------------------+
1 row in set
示例5:系统默认周日为每周第一天,“2020-04-01”是周三。
FORMAT 的值为“D”,返回值为6。
gbase> SELECT CURDATE(),TO_CHAR(CURDATE(),'D') FROM dual;
+------------+------------------------+
| CURDATE()
| TO_CHAR(CURDATE(),'D') |

GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-09-15)
南大通用数据技术股份有限公司
718
+------------+------------------------+
| 2020-04-01 | 4
|
+------------+------------------------+
1 row in set
FORMAT 的值为“DAY”,返回周三的英文全拼形式,首字母大写。
gbase> SELECT CURDATE(),TO_CHAR(CURDATE(),'DAY') FROM dual;
+--------------------+-----------------------------------+
| date('2020-04-01') | TO_CHAR(date('2020-04-01'),'DAY') |
+--------------------+-----------------------------------+
| 2020-04-01
| Wednesday
|
+--------------------+-----------------------------------+
1 row in set
FORMAT 的值为“DD”,返回值为11。
gbase> SELECT CURDATE(),TO_CHAR(CURDATE(),'DD') FROM dual;
+------------+-------------------------+
| CURDATE()
| TO_CHAR(CURDATE(),'DD') |
+------------+-------------------------+
| 2020-04-01 | 01
|
+------------+-------------------------+
1 row in set
FORMAT 的值为“DDD”,返回“2020-04-01”是2020 年的第几天。
gbase> SELECT CURDATE(),TO_CHAR(CURDATE(),'DDD') FROM dual;
+------------+--------------------------+
| CURDATE()
| TO_CHAR(CURDATE(),'DDD') |
+------------+--------------------------+
| 2020-04-01 | 092
|
+------------+--------------------------+
1 row in set
FORMAT 的值为“DY”,返回周三的英文形式的前三个字母,首字母大写。
gbase> SELECT CURDATE(),TO_CHAR(CURDATE(),'DY') FROM dual;
+------------+-------------------------+
| CURDATE()
| TO_CHAR(CURDATE(),'DY') |
+------------+-------------------------+
| 2020-04-01 | Wed
|
+------------+-------------------------+
1 row in set

GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-09-15)
南大通用数据技术股份有限公司
719
示例6:查询当前时间的毫秒,默认为6 位。
gbase> SELECT
CURRENT_TIMESTAMP(),TO_CHAR(CURRENT_TIMESTAMP(),'FF')
FROM dual;
+---------------------+-----------------------------------+
| CURRENT_TIMESTAMP() | TO_CHAR(CURRENT_TIMESTAMP(),'FF') |
+---------------------+-----------------------------------+
| 2020-04-01 16:37:51 | 000000
|
+---------------------+-----------------------------------+
1 row in set
gbase> SELECT
CURRENT_TIMESTAMP(),TO_CHAR(CURRENT_TIMESTAMP(),'FF9')
FROM dual;
+---------------------+------------------------------------+
| CURRENT_TIMESTAMP() | TO_CHAR(CURRENT_TIMESTAMP(),'FF9') |
+---------------------+------------------------------------+
| 2020-04-01 16:38:15 | 000000000
|
+---------------------+------------------------------------+
1 row in set
示例7:FORMAT 为“FX”或“FM”。
gbase> SELECT
CURRENT_TIMESTAMP(),TO_CHAR(CURRENT_TIMESTAMP(),'FX
YYYY-MM-DD') FROM dual;
+---------------------+----------------------------------------------+
| CURRENT_TIMESTAMP() | TO_CHAR(CURRENT_TIMESTAMP(),'FX
YYYY-MM-DD') |
+---------------------+----------------------------------------------+
| 2020-04-01 16:38:39 |
2020-04-01
|
+---------------------+----------------------------------------------+
1 row in set
gbase> SELECT
CURRENT_TIMESTAMP(),TO_CHAR(CURRENT_TIMESTAMP(),'FM
YYYY-MM-DD') FROM dual;
+---------------------+----------------------------------------------+
| CURRENT_TIMESTAMP() | TO_CHAR(CURRENT_TIMESTAMP(),'FM
YYYY-MM-DD') |
+---------------------+----------------------------------------------+
| 2020-04-01 16:39:12 |
2020-04-01
|
+---------------------+----------------------------------------------+
1 row in set

GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-09-15)
南大通用数据技术股份有限公司
720
示例8:FORMAT 为“HH”,返回小时。
gbase> SELECT
CURRENT_TIMESTAMP(),TO_CHAR(CURRENT_TIMESTAMP(),'HH')
FROM dual;
+---------------------+-----------------------------------+
| CURRENT_TIMESTAMP() | TO_CHAR(CURRENT_TIMESTAMP(),'HH') |
+---------------------+-----------------------------------+
| 2021-06-03 15:00:58 | 03
|
+---------------------+-----------------------------------+
1 row in set (Elapsed: 00:00:00.01)
FORMAT 为“HH12”,返回12 小时制的小时。
gbase> SELECT NOW(),TO_CHAR(NOW(),'HH12') FROM dual;
+---------------------+-----------------------+
| NOW()
| TO_CHAR(NOW(),'HH12') |
+---------------------+-----------------------+
| 2021-06-03 15:02:00 | 03
|
+---------------------+-----------------------+
1 row in set (Elapsed: 00:00:00.02)
FORMAT 为“HH24”,返回24 小时制的小时。
gbase> SELECT
NOW(),TO_CHAR(TIMESTAMPADD(HOUR,8,NOW()),'HH24') FROM
dual;
+---------------------+--------------------------------------------+
| NOW()
|
TO_CHAR(TIMESTAMPADD(HOUR,8,NOW()),'HH24') |
+---------------------+--------------------------------------------+
| 2021-06-03 15:03:43 | 23
|
+---------------------+--------------------------------------------+
1 row in set
示例9:FORMAT 为“IW”,返回一年中的第几周。
gbase> SELECT TO_CHAR(NOW(),'IW') FROM dual;
+---------------------+
| TO_CHAR(NOW(),'IW') |
+---------------------+
| 14
|
+---------------------+
1 row in set

GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-09-15)
南大通用数据技术股份有限公司
721
示例10:FORMAT 为“MI”,返回分钟数。
gbase> SELECT NOW(),TO_CHAR(NOW(),'MI') FROM dual;
+---------------------+---------------------+
| NOW()
| TO_CHAR(NOW(),'MI') |
+---------------------+---------------------+
| 2020-04-01 17:00:33 | 00
|
+---------------------+---------------------+
1 row in set
示例11:FORMAT 为“MM”,
“MON”,
“MONTH”,以不同形式返回月份。
gbase> SELECT NOW(),TO_CHAR(NOW(),'MM') FROM dual;
+---------------------+---------------------+
| NOW()
| TO_CHAR(NOW(),'MM') |
+---------------------+---------------------+
| 2020-04-01 17:01:09 | 04
|
+---------------------+---------------------+
1 row in set
gbase> SELECT NOW(),TO_CHAR(NOW(),'MON') FROM dual;
+---------------------+----------------------+
| NOW()
| TO_CHAR(NOW(),'MON') |
+---------------------+----------------------+
| 2020-04-01 17:01:31 | Apr
|
+---------------------+----------------------+
1 row in set
gbase> SELECT NOW(),TO_CHAR(NOW(),'MONTH') FROM dual;
+---------------------+------------------------+
| NOW()
| TO_CHAR(NOW(),'MONTH') |
+---------------------+------------------------+
| 2020-04-01 09:44:50 | April
|
+---------------------+------------------------+
1 row in set
示例12:FORMAT 为“PM HH12:MI:SS”。
gbase> SELECT NOW(),TO_CHAR(NOW(),'PM HH12:MI:SS') FROM
dual;
+---------------------+--------------------------------+
| NOW()
| TO_CHAR(NOW(),'PM HH12:MI:SS') |
+---------------------+--------------------------------+
| 2020-04-01 17:06:21 | PM 05:06:21
|

GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-09-15)
南大通用数据技术股份有限公司
722
+---------------------+--------------------------------+
1 row in set
gbase> SELECT
NOW(),TO_CHAR(TIMESTAMPADD(HOUR,8,NOW()),'PM HH12:MI:SS')
AS f_FormatShow FROM dual;
+---------------------+--------------+
| NOW()
| f_FormatShow |
+---------------------+--------------+
| 2020-04-01 10:40:45 | PM 06:40:45
|
+---------------------+--------------+
1 row in set
示例13:FORMAT 为“Q YYYY-MM-DD”,返回NOW() 中的日期是第几季度。
gbase> SELECT NOW(),TO_CHAR(NOW(),'Q YYYY-MM-DD') FROM
dual;
+---------------------+-------------------------------+
| NOW()
| TO_CHAR(NOW(),'Q YYYY-MM-DD') |
+---------------------+-------------------------------+
| 2020-04-01 17:07:00 | 2 2020-04-01
|
+---------------------+-------------------------------+
1 row in set
示例14:FORMAT 为“RM”,返回用罗马数字表示的月份。
gbase> SELECT NOW(),TO_CHAR(NOW(),'RM') FROM dual;
+---------------------+---------------------+
| NOW()
| TO_CHAR(NOW(),'RM') |
+---------------------+---------------------+
| 2020-04-01 16:46:52 | IV
|
+---------------------+---------------------+
1 row in set
示例15:FORMAT 为“RR”、“RRRR”,返回2 位或4 位的年。
gbase> SELECT TO_CHAR(NOW(),'RR') FROM dual;
+---------------------+
| TO_CHAR(NOW(),'RR') |
+---------------------+
| 20
|
+---------------------+
1 row in set
gbase> SELECT TO_CHAR(NOW(),'RRRR') FROM dual;

GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-09-15)
南大通用数据技术股份有限公司
723
+-----------------------+
| TO_CHAR(NOW(),'RRRR') |
+-----------------------+
| 2020
|
+-----------------------+
1 row in set
gbase> SELECT
TO_CHAR(TIMESTAMPADD(YEAR,-1200,NOW()),'RRRR') FROM dual;
+------------------------------------------------+
| TO_CHAR(TIMESTAMPADD(YEAR,-1200,NOW()),'RRRR') |
+------------------------------------------------+
| 0820
|
+------------------------------------------------+
1 row in set
示例16:FORMAT 为“SCC”,返回日期所属的世纪数。
gbase> SELECT NOW(),TO_CHAR(NOW(),'SCC') FROM dual;
+---------------------+----------------------+
| NOW()
| TO_CHAR(NOW(),'SCC') |
+---------------------+----------------------+
| 2020-04-01 17:08:12 |
21
|
+---------------------+----------------------+
1 row in set
gbase> SELECT TIMESTAMPADD(YEAR,-20,NOW()) AS
f_DATETIME,TO_CHAR(TIMESTAMPADD(YEAR,-20,NOW()),'SCC') AS
f_AD FROM dual;
+---------------------+------+
| f_DATETIME
| f_AD |
+---------------------+------+
| 2000-04-01 17:08:26 |
20
|
+---------------------+------+
1 row in set
示例17:FORMAT 为“SSSSS”,返回一天从午夜开始的累积秒数。
gbase> SELECT
NOW(),TO_CHAR(NOW(),'SS'),TO_CHAR(NOW(),'SSSSS') FROM dual;
+---------------------+---------------------+------------------------+
| NOW()
| TO_CHAR(NOW(),'SS') |
TO_CHAR(NOW(),'SSSSS') |
+---------------------+---------------------+------------------------+
| 2020-04-01 17:08:40 | 40
| 61720
|

GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-09-15)
南大通用数据技术股份有限公司
724
+---------------------+---------------------+------------------------+
1 row in set
示例18:FORMAT 为“TS”,返回带有AM 或者PM 的时分秒形式的时间。
gbase> SELECT NOW(),TO_CHAR(NOW(),'TS') FROM dual;
+---------------------+---------------------+
| NOW()
| TO_CHAR(NOW(),'TS') |
+---------------------+---------------------+
| 2020-04-01 17:11:38 | 05:11:38 PM
|
+---------------------+---------------------+
1 row in set
gbase> SELECT TIMESTAMPADD(HOUR,8,NOW()) AS
f_now,TO_CHAR(TIMESTAMPADD(HOUR,8,NOW()),'TS') AS f_now_ts
FROM dual;
+---------------------+-------------+
| f_now
| f_now_ts
|
+---------------------+-------------+
| 2020-04-02 01:11:48 | 01:11:48 AM |
+---------------------+-------------+
1 row in set
示例19:FORMAT 为“W”,返回日期所在月份的第几周。
gbase> SELECT NOW(),TO_CHAR(NOW(),'W') FROM dual;
+---------------------+--------------------+
| NOW()
| TO_CHAR(NOW(),'W') |
+---------------------+--------------------+
| 2020-04-01 17:12:14 | 1
|
+---------------------+--------------------+
1 row in set