返回首页

gbase数据、南大通用产品文档:GBase8c导入最佳实践

更新日期:2024年09月11日

使用COPY 命令导入数据
COPY 命令从本地或其它数据库的多个数据源并行导入数据。
COPY 导入大量数据的效
率要比INSERT 语句高很多,而且存储数据也更有效率。
有关如何使用COPY 命令的更多信息,
请参阅9.2 使用COPY FROM STDIN 导入数据。
使用gsql 元命令导入数据
\copy 命令在任何psql 客户端登录数据库成功后可以执行导入数据。
与COPY 命令相比
较,\copy 命令不是读取或写入指定文件的服务器,而是直接读取或写入文件。
这个操作不如COPY 命令有效,
因为所有的数据必须通过客户端/服务器的连接来传递。
对于大量的数据来说COPY 命令可能会更好。
有关如何使用\copy 命令的更多信息,请参阅9.3 使用gsql 元命令导入数据。

GBase 8c V5 开发者手册
南大通用数据技术股份有限公司
61
\COPY 只适合小批量,格式良好的数据导入,不会对非法字符做预处理,也无容错能
力,无法适用于含有异常数据的场景。导入数据应优先选择COPY。
使用INSERT 多行插入
插入如果不能使用copy 命令,而您需要进行sql 插入,可以根据情况使用多行插入。
如果您使用的是列存表,一次只插入一行或几行,则数据压缩效率低下。
多行插入是通过批量进行一系列插入而提高性能。
下面的示例使用一条insert 语句向一
个三列表插入三行。这仍属于少量插入,
只是用来说明多行插入的语法。
创建表的步骤请参
考3.6-创建和管理表。
向表customer_t1 中插入多行数据:
postgres=# insert into customer_t1 values (68, 'a1', 'zhou','wang'),
(43, 'b1', 'wu', 'zhao'),
(95, 'c1', 'zheng', 'qian');
有关更多详情和示例,请参阅《GBase 8c V5_3.0.0_SQL 手册》INSERT。
使用INSERT 批量插入
带SELECT 子句使用批量插入操作来实现高性能数据插入。
如果需要将数据或数据子集从一个表移动到另一个表,可以使用《GBase 8c
V5_3.0.0_SQL 手册》INSERT 和
《GBase 8c V5_3.0.0_SQL 手册》
CREATE TABLE AS 命令。
如果从指定表插入数据到当前表,例如在数据库中创建了一个表customer_t1 的备份表
customer_t2,现在需要将表customer_t1 中的数据插入到表customer_t2 中,则可以执行如下
命令。
postgres=# CREATE TABLE customer_t2 (
c_customer_sk
integer,
c_customer_id
char(5),
c_first_name char(6),
c_last_name char(8)
);
postgres=# INSERT INTO customer_t2 SELECT * FROM customer_t1;
上面的示例等价于:
postgres=# CREATE TABLE customer_t2 AS SELECT * FROM customer_t1;

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

Data Definition Language,数据库定义语言,用于定义和管理SQL 数据库中的所
有对象的语言。GBase 8a Cluster MPP 的DDL 语言包括对DATABASE、TABLE、
VIEW、INDEX 等对象的CREATE、ALTER、DROP 和TRUNCATE 操作。
表5- 50 对象及支持的DDL 操作说明
对象
对象含义
支持的DDL 操作
DATABSE
数据库
CREATE、DROP
TABLE

CREATE、ALTER、DROP、TRUNCATE
VIEW
视图
CREATE、ALTER、DROP

GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-09-15)
南大通用数据技术股份有限公司
944
对象
对象含义
支持的DDL 操作
INDEX
索引
CREATE、ALTER、DROP
表5- 51 DDL 操作说明
DDL 操作
DDL 操作功能
CREATE
创建对象
ALTER
修改对象属性
DROP
删除对象
TRUNCATE
删除对象内记录

函数说明
如果字符串str 的最左边的字符是一个多字节的字符,返回该字符的代码,代码
的计算通过使用公式
((1st byte code)+ (2nd byte code × 256)+ (3rd byte code
2562)…)计算其组成字节的数值而得出。如果最左边的字符不是一个多字节字
符,返回值与ASCII()函数的返回值相同。
示例
示例1:str 为“2”,返回2 对应的ASCII 码值。
gbase> SELECT ORD('2') FROM dual;
+----------+
| ORD('2') |
+----------+
|
50 |
+----------+
1 row in set
示例2:str 为“南大通用”,返回“南”对应的代码。
gbase> SELECT ORD('南大通用') FROM dual;
+---------------------+
| ORD('南大通用')
|
+---------------------+
|
15043991 |
+---------------------+
1 row in set

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