返回首页

gbase数据、南大通用产品文档:GBase8a多数据文件加载

更新日期:2024年09月11日

指定多个数据源文件,文件可以不在同一个文件服务器,逗号分隔。
示例
gbase> LOAD DATA INFILE 'ftp://192.168.0.1/pub/lineitem.tbl,
http://192.168.0.2/lineitem.tbl' INTO TABLE test.lineitem FIELDS
TERMINATED BY '|' ENCLOSED BY '"' LINES TERMINATED
BY '\n';
Query OK, 24000000 rows affected
Task 1 finished, Loaded 24000000 records, Skipped 0 records

使用 SET COLLATION 语句来指定该会话的新的对照顺序,取代通过
DB_LOCALE 环境变量设置暗示的对照。SET NO COLLATION 恢复缺省的对
照。
语法

元素
描述
限制
语法
locale 要在此会话中使用其对
照顺序的语言环境的名

必须为数据库服务器可访问的
语言环境的名称
引用字符

用法
SET COLLATION 语句是对 SQL 的 ANSI/ISO 标准的扩展。您可随同 GBase 8s
ESQL/C 使用此语句。
如同 GBase 8s GLS 用户指南 所解释的那样,数据库服务器使用语言环境文件来
指定字符集、对照顺序和显示与操作字符串级其他数据值的一些自然语言的其他
约定。数据库语言环境的对照顺序是数据库服务器据其对字符串排序的次序顺
序。
如果您未设定 DB_LOCALE 的值,则基于 United States English,对于 UNIX™
的缺省的语言环境为 en_us.8859-1 ,对于 Windows™ 系统的语言环境为 Code

GBase 8s SQL 指南:语法
南大通用数据技术股份有限公司 961
Page 1252 。否则,数据库服务器使用 DB_LOCALE 设置作为它的语言环境。在
运行时,对于在同一会话中先前访问的所有数据库服务器,SET COLLATION 语
句覆盖 DB_LOCALE 的对照顺序。
对于余下的会话,该新对照顺序保持有效,或直到您发出另一 SET COLLATION
语句为止。不影响其他的会话,但您以非缺省的对照创建的数据库对象使用在他
们创建时有效的任何对照顺序。
在缺省情况下,对照顺序是代码集顺序,但有些语言环境还支持特定的语言环境
顺序。在大多数上下文中,仅 NCHAR 和 NVARCHAR 数据值可根据特定于语
言环境的对照顺序存储。
以 SET COLLATION 指定对照顺序
对当前会话中先前访问的所有数据库服务器,SET COLLATION 以 locale 指定
的对照顺序替代当前的对照顺序。 例如,此示例指定中文的对照顺序:
EXEC SQL set collation "zh_cn.gb18030-2000";
如果在此会话中的下一数据库服务器的活动是对 NCHAR 或 NVARCHAR 值排
序,则遵循中文的对照顺序。
在同一会话中,假设下列 SET NO COLLATION 语句恢复对对照顺序的
DB_LOCALE 设置:
EXEC SQL set no collation;
在 SET NO COLLATION 执行之后,在同一会话中的后续的对照基于该
DB_LOCALE 设置。然而,您使用中文对照顺序创建的任何数据库对象,诸如检
查约束、索引、准备好的对象、触发器或 UDR,会继续将中文对照应用于
NCHAR 和 NVARCHAR 数据类型。
在 NLSCASE INSENSITIVE 数据库中的对照
在 NLSCASE INSENSITIVE 数据库中,在 NCHAR 和 NVARCHAR 数据上的
对照操作不区分字母大小写,以便于数据库服务器将有相同序列的字母组成的字
符串中的大小写变量按重复的字符串处理。对照的列表按照其检索的顺序来对这
些区分大小写的重复的内容排列,因此,带有字符串 alpha 的大小写变量的对照
的列表可能以任何顺序出现,比如下列顺序,不管变量的大小写:
alpha
Alpha

GBase 8s SQL 指南:语法
南大通用数据技术股份有限公司 962
alpha
ALPHA
Alpha
要获取更多信息,请参阅 在 NLSCASE INSENSITIVE 数据库中重复的行 和 在
区分大小写的数据库中的 NCHAR 和 NVARCHAR 表达式。
对 SET COLLATION 的限制
虽然 SET COLLATION 使得您能在会话内动态地更改数据库服务器的对照顺序,
但您应了解对 SET COLLATION 语句可发挥作用的范围的几个限制。

仅数据库服务器执行的对照受影响。对数据排序的客户端进程不受 SET
COLLATION 影响。

仅当前会话受影响。其他会话不受您的 SET COLLATION 语句的直接影
响,但数据库服务器会使用它们的创建时对照顺序来设置任何数据库对
象,这些数据库对象是您在已成功地运行了 SET COLLATION 之后创建
的那些。

对对照顺序的更改不更改代码集。数据库服务器通常使用由
DB_LOCALE 指定的代码集。

仅按照特定于语言环境的顺序对 NCHAR 和 NVARCHAR 值进行排
序。
处理来自不同的代码集的字符
由于 SET COLLATION 仅更改对照顺序,而不是当前的语言环境或代码集,因此您
通常不可使用此语句来将来自不同的语言环境的字符数据插入到同一数据库之
内。如果数据库需要存储来自两种或多种语言的字符,这些语言内在地需要不同
的代码集或代码页,则您必须改为使用支持 Unicode 的语言环境。对于 GBase
8s ESQL/C 应用,以及对于使用 GBase 8s GLS 库的其他客户端应用,其语言环
境支持 UTF-8 字符编码的数据库可存储相应于来自多种自然语言的不同的字符集
的代码点的字符,但仅当下列条件全都满足时:

当数据库服务器实例启动时,设置 GL_USEGLU 环境变量为 1。

当创建数据库时,设置 DB_LOCALE 环境变量为有效的 Unicode 语言
环境。

设置 CLIENT_LOCALE 环境变量为数据库服务器的 DB_LOCALE 设置
支持的有效的 Unicode 语言环境。

GBase 8s SQL 指南:语法
南大通用数据技术股份有限公司 963
对于 GBase 8s 要使用“Unicode 的国际组件”(ICU)4.8.1 库来支持最高达 6.0
的 Unicode 的版本,在启动服务器之前,在服务器环境中必须将 GL_USEGLU
环境变量设置为值 1(一)。在使用 UTF-8 字符编码的数据库中,此设置初始
化启用 Unicode 对照和 SQL 操作的那些转换规则,包括 Chinese GB18030-2000
代码集。此转换仅适用于以已设置的 GL_USEGLU=1 创建了的数据库。
注意: 然而,GL_USEGLU 环境变量对 JDBC 客户端应用不起作用 ,包括 GBase
8s JSON 兼容性线协议 listener 的那些应用。要在 Unicode 语言环境中正确地
支持 JDBC 应用,没有在客户端或在服务器环境中将 GL_USEGLU 设置为 1 的要
求。
由数据库对象执行的对照
虽然在会话结束之后(或您执行 SET NO COLLATION 之后)数据库服务器恢复
到 DB_LOCALE 对照顺序,但您使用非缺省的对照创建的对象仍留在数据库
中。例如,您可在相同的列的集合上,使用 SET COLLATION 指定的不同的对照
顺序来创建多索引,称为多语言索引。
然而,在给定的列的集合上,仅可存在一个集群的索引。
在给定的列的集合上,仅可存在一个唯一的约束或主键,但您可在同样的列的集
合上创建多个唯一的索引,如果每一索引有不同的对照顺序的话。
当计算查询的成本时,对于那些将任何非当前会话对照的任何对照应用于
NCHAR 或 NVARCHAR 列,查询优化器不顾及这些索引。
附加的索引的对照顺序必须与它的表的相同,且此必须为由 DB_LOCALE 指定
的缺省的对照顺序。
ALTER INDEX 语句不可更改索引的对照。当 ALTER INDEX 执行时,不管任何
先前的 SET COLLATION 语句。
当您将来自 CHAR 列的值与 NCHAR 列比较时, GBase 8s 强制将 CHAR 值
转型为 NCHAR,然后再应用当前的对照。类似地,在比较 VARCHAR 与
NVARCHAR 值之前, GBase 8s 首先将 VARCHAR 值强制转型为
NVARCHAR。

GBase 8s SQL 指南:语法
南大通用数据技术股份有限公司 964
当为远程表或视图创建同义词时,参与的数据库必须有相同的对照顺序。然而,
现有的同义词可用在支持 SET COLLATION 的其他数据库中,且该同义词的对照
顺序不顾及 DB_LOCALE 的设置。
对 NCHAR 或 NVARCHAR 值排序的检查约束、游标、准备好的对象、触发器
和 SPL 例程使用在它们创建时刻生效的对照,如果这与 DB_LOCALE 设置不
同的话。
当创建按本地化的顺序排序的数据库对象时,有多少不同的对照会对性能有灵敏
的影响。

功能说明
CREATE TABLE 以用户给定的名字在当前数据库创建一个表。
用户必须有创建表
的权限。

GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-04-10)
南大通用数据技术股份有限公司
951
语法格式
CREATE [TEMPORARY] TABLE [IF NOT EXISTS]
[vc_name.][database_name.]table_name
(column_definition [ , column_definition],
... [,
key_options])
[table_options]
[partition_options]
column_definition:
column_name data_type [NOT NULL | NULL] [DEFAULT default_value]
key_options:
KEY "index_name" ("column_name") KEY_BLOCK_SIZE=
KEY_DC_SIXE= USIONG HASH GLOBAL
table_options:
[COMMENT 'comment_value']
partition_options:
PARTITION BY
{ RANGE(expr)
| LIST(expr)
| LINEAR] HASH(expr)
| [LINEAR] KEY(column_list)}
[PARTITIONS num]
[SUBPARTITION BY
{ [LINEAR] HASH(expr)
| [LINEAR] KEY(column_list) }
[SUBPARTITIONS num]
]
[(partition_definition [, partition_definition] ...)]
partition_definition:
PARTITION partition_name
[VALUES
{LESS THAN {(expr | value_list) | MAXVALUE}
|
IN (value_list)}]
[(subpartition_definition [, subpartition_definition] ...)]
subpartition_definition:
SUBPARTITION logical_name
表5- 54 参数说明
参数名称


TEMPORARY
该参数为可选参数,创建临时表需要使用此关键字。

GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-04-10)
南大通用数据技术股份有限公司
952
参数名称


PARTITION BY
该参数为可选参数,
创建分区表时使用此关键字。
分区表
的创建请参见“CREATE TABLE PARTITION”小节的内
容。
IF NOT EXISTS
该参数为可选参数,
用户可以使用关键字IF NOT EXISTS
创建表,如果表已经存在,系统将报告WARNING 信息。
vc_name
该参数为可选参数,
指定虚拟集群后,
在此虚拟集群下创
建数据库和表。
如果没有显示指定vc_name 参数,
创建的
数据库隶属于USE VC vc_name 后的虚拟集群。
database_name
该参数为可选参数,
指定数据库后,
在此数据库下创建表。
如果没有显示指定database_name 参数,创建的表隶属于
USE database_name 后的数据库中的表。
table_name
表命名规则请参见
“数据库、
表、
索引、
列和别名”
小节。
默认情况下,
在当前数据库中创建表。
如果没有指定当前
数据库或表已经存在,则报告错误信息。
column_name
指定表中的数据列。
data_type
指定数据列的数据类型。数据类型参见“数据类型”中的
内容。
NOT NULL | NULL
指定数据列的值,是否允许为NULL。如果既没有指定
NULL 也没有指定NOT NULL,列被视为指定了NULL。
default_value
指定数据列的默认值。
默认值必须是一个常数,
而不能是
一个函数或者一个表达式。
举例来说,
用户不能将一个数
据列的默认值设置为NOW()或者CURRENT_DATE()之
类的函数。
对于给定的一个表,
可以使用SHOW CREATE
TABLE 语句来查看哪些列有显式DEFAULT 子句。
comment_value
指定数据列的备注说明。例如:stu_no id COMMENT '学
号'。
key_options
指定表中的hash 索引。
index_name
指定要创建的索引名称
index_column_name
指定要创建的索引列名
KEY_DC_SIZE=dc_value
指定HASH 索引的分段大小。dc_value 最大值为

GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-04-10)
南大通用数据技术股份有限公司
953
参数名称


2147483646,最小值为0。默认为0 表示在整列上创建
HASH 索引。
USING HASH GLOBAL
指定HASH 索引为全局索引。
table_options
默认为随机分布表。
REPLICATED
使用关键词REPLICATED 创建复制表。复制表在GBase
8a MPP Cluster 的各个data 节点上存放的是完整数据。
DISTRIBUTED
BY
column_name
指定创建表中的物理列column_name 是哈希列,这样创
建的表,
称为哈希分布表。
哈希列可以是整数类型
(INT、
BIGINT 等)、VARCHAR 或者DECIMAL 类型
COMMENT
指定表的备注说明。可以用SHOW CREATE TABLE
table_name 和SHOW FULL COLUMNS FROM table_name
语句来显示备注信息。
COMPRESS
指定表级的数据压缩属性,
包含字符类型的压缩属性值和
数值类型的压缩属性值。
注意

复制表表名尾部不允许是_n{number}结尾,例如mytable_n1,mytable_n12
是不允许使用的。

执行OGG Kafka 数据同步时,需要HASH 分布列的值不能为空
示例
示例1:创建一张普通表。
gbase> CREATE TABLE t1(a int , b varchar(50) NOT NULL DEFAULT
'gbase');
Query OK, 0 rows affected
gbase> DESC t1;
+-------+-------------+------+-----+---------+-------+
| Field | Type
| Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| a
| int(11)
| YES
|
| NULL
|
|
| b
| varchar(50) | NO
|
| gbase
|
|

GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-04-10)
南大通用数据技术股份有限公司
954
+-------+-------------+------+-----+---------+-------+
2 rows in set
示例2:创建带有列注释信息的表。
gbase> DROP TABLE IF EXISTS t1;
Query OK, 0 rows affected
gbase> CREATE TABLE t1 (f_username varchar(10) comment 'name' );
Query OK, 0 rows affected
gbase> DESC t1;
+------------+-------------+------+-----+---------+-------+
| Field
| Type
| Null | Key | Default | Extra |
+------------+-------------+------+-----+---------+-------+
| f_username | varchar(10) | YES
|
| NULL
|
|
+------------+-------------+------+-----+---------+-------+
1 row in set
gbase> SHOW CREATE TABLE t1;
+-------+--------------------------------------------------+
| Table | Create Table
|
+-------+--------------------------------------------------+
| t1
| CREATE TABLE "t1" (
"f_username" varchar(10) DEFAULT NULL COMMENT 'name'
)
|
+-------+--------------------------------------------------+
1 row in set