功能描述
提交当前事务。
语法格式
COMMIT [ WORK | TRANSACTION ]
参数说明
注意事项
执行COMMIT这个命令的时候,命令执行者必须是该事务的创建者或系统管理员,且创建和提交操作可以不在同一个会话中。
语法兼容
符合SQL标准。
相关语法
功能描述
提交一个预先为两阶段提交准备好的事务。
语法格式
COMMIT PREPARED transaction_id
参数说明
注意事项
语法兼容
COMMIT PREPARED是一种 PostgreSQL扩展。
相关语法
PREPARE TRANSACTION, ROLLBACK PREPARED
功能描述
实现在表和文件之间拷贝数据。
语法格式
COPY table_name [ ( column_name [, ...] ) ]
FROM { 'filename' | PROGRAM 'command' | STDIN }
[ [ WITH ] ( option [, ...] ) ]
COPY { table_name [ ( column_name [, ...] ) ] | ( query ) }
TO { 'filename' | PROGRAM 'command' | STDOUT }
[ [ WITH ] ( option [, ...] ) ]
其中 option 可以是下列之一:
FORMAT format_name
OIDS [ boolean ]
FREEZE [ boolean ]
DELIMITER 'delimiter_character'
NULL 'null_string'
HEADER [ boolean ]
QUOTE 'quote_character'
ESCAPE 'escape_character'
FORCE_QUOTE { ( column_name [, ...] ) | * }
FORCE_NOT_NULL ( column_name [, ...] )
FORCE_NULL ( column_name [, ...] )
ENCODING 'encoding_name'
参数说明
注意事项
COPY只能用于表,不能用于视图。
对任何要插入数据的表必须有插入权限。
如果声明了一个字段列表,COPY将只在文件和表之间拷贝已声明字段的数据。如果表中有任何不在字段列表里的字段,COPY FROM将为那些字段插入缺省值。
如果声明了数据源文件,服务器必须可以访问该文件;如果指定了STDIN,数据将在客户前端和服务器之间流动,输入时,表的列与列之间使用TAB键分隔,在新的一行中以反斜杠和句点(\.)表示输入结束。
如果数据文件的任意行包含比预期多或者少的字段,COPY FROM将抛出一个错误。
数据的结束可以用一个只包含反斜杠和句点(\.)的行表示。如果从文件中读取数据,数据结束的标记是不必要的;如果在客户端应用之间拷贝数据,必须要有结束标记。
COPY FROM中\N为空字符串,如果要输入实际数据值\N ,使用\\N。
COPY FROM不支持在导入过程中对数据做预处理(比如说表达式运算,填充指定默认值等)。如果需要在导入过程中对数据做预处理,用户需先把数据导入到临时表中,然后执行SQL语句通过运算插入到表中,但此方法会导致I/O膨胀,降低导入性能。
COPY FROM在遇到数据格式错误时会回滚事务,但没有足够的错误信息,不方便用户从大量的原始数据中定位错误数据。
COPY FROM/TO适合低并发,本地小数据量导入导出。
范例
COPY customer TO PROGRAM 'gzip > ~/data/sql/customer_data.gz';
COPY 10
功能描述
创建一种新的访问方法。
语法格式
CREATE ACCESS METHOD name
TYPE access_method_type
HANDLER handler_function
参数说明
注意事项
访问方法名称在数据库中必须唯一。
只有系统管理员可以定义新的访问方法。
范例
CREATE ACCESS METHOD heptree TYPE INDEX HANDLER heptree_handler;
语法兼容
CREATE ACCESS METHOD是一种PostgreSQL扩展。
相关语法
DROP ACCESS METHOD, CREATE OPERATOR CLASS, CREATE OPERATOR FAMILY
功能描述
定义一个新的聚集函数。
语法格式
CREATE AGGREGATE name ( [ argmode ] [ argname ] arg_data_type [ , ... ] ) (
SFUNC = sfunc,
STYPE = state_data_type
[ , CFUNC = cfunc ]
[ , SSPACE = state_data_size ]
[ , FINALFUNC = ffunc ]
[ , FINALFUNC_EXTRA ]
[ , COMBINEFUNC = combinefunc ]
[ , SERIALFUNC = serialfunc ]
[ , DESERIALFUNC = deserialfunc ]
[ , INITCOND = initial_condition ]
[ , INITCOLLECT = initial_collection_condition ]
[ , MSFUNC = msfunc ]
[ , MINVFUNC = minvfunc ]
[ , MSTYPE = mstate_data_type ]
[ , MSSPACE = mstate_data_size ]
[ , MFINALFUNC = mffunc ]
[ , MFINALFUNC_EXTRA ]
[ , MINITCOND = minitial_condition ]
[ , SORTOP = sort_operator ]
[ , PARALLEL = { SAFE | RESTRICTED | UNSAFE } ]
)
CREATE AGGREGATE name ( [ [ argmode ] [ argname ] arg_data_type [ , ... ] ]
ORDER BY [ argmode ] [ argname ] arg_data_type [ , ... ] ) (
SFUNC = sfunc,
STYPE = state_data_type
[ , CFUNC = cfunc ]
[ , SSPACE = state_data_size ]
[ , FINALFUNC = ffunc ]
[ , FINALFUNC_EXTRA ]
[ , INITCOND = initial_condition ]
[ , INITCOLLECT = initial_collection_condition ]
[ , PARALLEL = { SAFE | RESTRICTED | UNSAFE } ]
[ , HYPOTHETICAL ]
)
或者旧的语法:
CREATE AGGREGATE name (
BASETYPE = base_type,
SFUNC = sfunc,
STYPE = state_data_type
[ , CFUNC = cfunc ]
[ , SSPACE = state_data_size ]
[ , FINALFUNC = ffunc ]
[ , FINALFUNC_EXTRA ]
[ , COMBINEFUNC = combinefunc ]
[ , SERIALFUNC = serialfunc ]
[ , DESERIALFUNC = deserialfunc ]
[ , INITCOND = initial_condition ]
[ , INITCOLLECT = initial_collection_condition ]
[ , MSFUNC = msfunc ]
[ , MINVFUNC = minvfunc ]
[ , MSTYPE = mstate_data_type ]
[ , MSSPACE = mstate_data_size ]
[ , MFINALFUNC = mffunc ]
[ , MFINALFUNC_EXTRA ]
[ , MINITCOND = minitial_condition ]
[ , SORTOP = sort_operator ]
)
参数说明
count(*));注意事项
CREATE AGGREGATE的参数可以用任意顺序书写,而无需遵照以上说明的顺序。
GBase 8c数据库中,聚合以两种不同的模式工作:
范例
CREATE AGGREGATE sum (integer)
(
sfunc = add,
stype = integer
);
CREATE AGGREGATE
语法兼容
CREATE AGGREGATE是PostgreSQL的语言扩展。SQL 标准没有提供 用户定义的聚集函数。
相关语法
ALTER AGGREGATE, DROP AGGREGATE
功能描述
创建一个新集群节点间的同步点。该同步点可用于数据恢复。
语法格式
CREATE BARRIER barrier_name
参数说明
注意事项
CREATE BARRIER在集群的每个节点上创建新的XLOG记录。可以将集群恢复到一个一致的点。需要注意的是,该操作需要手工创建,不能自动创建。
CREATE BARRIER在recovery.conf中修改名为recovery_target_barrier的恢复参数。在数据库恢复操作时,将recovery_target_barrier设置为已经创建的BARRIER值,然后将recovery.conf分发到每个节点的每个数据文件夹,一个个重启节点后生效。
范例
CREATE BARRIER;
BARRIER cn1_678265737977043
功能描述
定义一种新的转换。说明如何在两个类型之间进行转换。
语法格式
CREATE CAST (source_type AS target_type)
WITH FUNCTION function_name [ (argument_type [, ...]) ]
[ AS ASSIGNMENT | AS IMPLICIT ]
CREATE CAST (source_type AS target_type)
WITHOUT FUNCTION
[ AS ASSIGNMENT | AS IMPLICIT ]
CREATE CAST (source_type AS target_type)
WITH INOUT
[ AS ASSIGNMENT | AS IMPLICIT ]
参数说明
注意事项
使用DROP CAST移除用户定义的转换。
如果要定义双向转换类型,需要在两个方向上都进行显示声明。
GBase 8c数据库会自动提供用户定义类型和标准字符串类型转换,无需用户创建。
范例
CREATE CAST (bigint AS int4) WITH FUNCTION int4(bigint) AS ASSIGNMENT;
在系统中这种转换已经被预定义。
语法兼容
CREATE CAST命令符合 SQL标准。
相关语法
CREATE FUNCTION, CREATE TYPE, DROP CAST
功能描述
定义新排序规则。
语法格式
CREATE COLLATION [ IF NOT EXISTS ] name (
[ LOCALE = locale, ]
[ LC_COLLATE = lc_collate, ]
[ LC_CTYPE = lc_ctype, ]
[ PROVIDER = provider, ]
[ VERSION = version ]
)
CREATE COLLATION [ IF NOT EXISTS ] name FROM existing_collation
参数说明
注意事项
使用DROP COLLATION可移除用户定义的排序规则。
范例
从操作系统区域fr_FR.utf8创建一种排序规则(假定 当前数据库编码是UTF8):
CREATE COLLATION french1 (locale = 'fr_FR.utf8');
CREATE COLLATION
从一个现有的排序规则创建一个新的排序规则:
CREATE COLLATION german1 FROM "de_DE";
CREATE COLLATION
语法兼容
在 SQL 标准中有一个CREATE COLLATION 语句,但是它被限制为只能复制一个现有的排序规则。创建新排序规则的 语法是一种PostgreSQL扩展。
相关语法
ALTER COLLATION, DROP COLLATION
功能描述
定义一种新的编码转换。
语法格式
CREATE [ DEFAULT ] CONVERSION name
FOR source_encoding TO dest_encoding FROM function_name
参数说明
该函数必须具有如下特征:
conv_proc(
integer, -- 源编码 ID
integer, -- 目标编码 ID
cstring, -- 源字符串(空值终止的 C 字符串)
internal, -- 目标(用一个空值终止的 C 字符串填充)
integer -- 源字符串长度
) RETURNS void;
注意事项
使用DROP CONVERSION可以移除用户定义的转换。
范例
使用myfunc创建一个从编码UTF8到 LATIN1的转换:
CREATE CONVERSION myconv FOR 'UTF8' TO 'LATIN1' FROM myfunc;
语法兼容
CREATE CONVERSION是PostgreSQL扩展。
相关语法
ALTER CONVERSION, CREATE FUNCTION, DROP CONVERSION
功能描述
创建一个新的数据库。缺省情况下新数据库将通过复制标准系统数据库template1来创建。可以通过TEMPLATE template指定不同的模板。
语法格式
CREATE DATABASE name
[ [ WITH ] [ OWNER [=] user_name ]
[ TEMPLATE [=] template ]
[ ENCODING [=] encoding ]
[ LC_COLLATE [=] lc_collate ]
[ LC_CTYPE [=] lc_ctype ]
[ TABLESPACE [=] tablespace_name ]
[ ALLOW_CONNECTIONS [=] allowconn ]
[ CONNECTION LIMIT [=;] connlimit ]
[ IS_TEMPLATE [=] istemplate ] ]
参数说明
注意事项
可选的参数可以被写成任何顺序,不用按照上面说明的顺序。
只有拥有CREATEDB权限的用户才可以创建新数据库,系统管理员默认拥有此权限。
不能在事务块中执行创建数据库语句。
在创建数据库过程中,若出现类似“could not initialize database directory”的错误提示,可能是由于文件系统上数据目录的权限不足或磁盘满等原因引起。
范例
CREATE DATABASE gbasedbt;
CREATE DATABASE
相关语法