返回首页

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

更新日期:2024年09月11日

非空列的数据加载
问题现象
对非空列进行加载,数据为空格时如何处理?
解决方法
数据文件:
[root@pst-red214 gbase]# cat t1.txt
aa| |bb
建表语句:
create table t1(c1 varchar(10),c2 varchar(10) not null,c3 varchar(10));
执行加载,数据跳过:
gbase> load data infile 'sftp://gbase@192.168.105.214/home/gbase/t1.txt' into
table t1 fields terminated by '|';
Query OK, 0 rows affected (Elapsed: 00:00:00.66)
Task 126 finished, Loaded 0 records, Skipped 1 records
问题分析:

GBase 8a MPP Cluster 最佳实践
5 FAQ
文档版本(2022-02-11)
南大通用数据技术股份有限公司
143
加载参数PRESERVE BLANKS:
用于设定是否保留字段内容两端的空格,
默认不
保留空格。
不保留空格的情况下将数据中的空格当做null 处理,与表列定义中not null 矛
盾,所以加载报错。
问题解决:
1.
加上参数PRESERVE BLANKS,保留空格:
gbase> load data infile
'sftp://gbase@192.168.105.214/home/gbase/t1.txt' into table t1
fields terminated by '|' PRESERVE BLANKS;
Query OK, 1 row affected (Elapsed: 00:00:01.37)
Task 127 finished, Loaded 1 records, Skipped 0 records
gbase> select * from t1;
+------+----+------+
| c1
| c2 | c3
|
+------+----+------+
| aa
|
| bb
|
+------+----+------+
1 row in set (Elapsed: 00:00:00.03)
2.
数据文件中增加包围符:

GBase 8a MPP Cluster 最佳实践
5 FAQ
文档版本(2022-02-11)
南大通用数据技术股份有限公司
144
[root@pst-red214 gbase]# cat t1.txt
'aa'|' '|'bb'
gbase> load data infile
'sftp://gbase@192.168.105.214/home/gbase/t1.txt' into table t1
fields terminated by '|' enclosed by '''';
Query OK, 1 row affected (Elapsed: 00:00:01.22)
Task 132 finished, Loaded 1 records, Skipped 0 records
gbase> select * from t1;
+------+----+------+
| c1
| c2 | c3
|
+------+----+------+
| aa
|
| bb
|
+------+----+------+
1 row in set (Elapsed: 00:00:00.02)
3.
修改表结构字段为允许null,default null:

GBase 8a MPP Cluster 最佳实践
5 FAQ
文档版本(2022-02-11)
南大通用数据技术股份有限公司
145
gbase> create table t1(c1 varchar(10),c2 varchar(10),c3 varchar(10));
Query OK, 0 rows affected (Elapsed: 00:00:01.28)
gbase> show create table t1;
+-------+-------------------------------------------------------------------------------------------------------------------
----------------------------------------------------------------------+
| Table | Create Table
|
+-------+-------------------------------------------------------------------------------------------------------------------
----------------------------------------------------------------------+
| t1
| CREATE TABLE "t1" (
"c1" varchar(10) DEFAULT NULL,
"c2" varchar(10) DEFAULT NULL,
"c3" varchar(10) DEFAULT NULL
) ENGINE=EXPRESS DEFAULT CHARSET=utf8 TABLESPACE='sys_tablespace' |
+-------+-------------------------------------------------------------------------------------------------------------------
----------------------------------------------------------------------+
1 row in set (Elapsed: 00:00:00.00)
gbase> load data infile 'sftp://gbase@192.168.105.214
/home/gbase/t1.txt' into table t1 fields terminated by '|';
Query OK, 1 row affected (Elapsed: 00:00:01.23)
Task 135 finished, Loaded 1 records, Skipped 0 records
gbase> select * from t1;
+------+------+------+
| c1
| c2
| c3
|
+------+------+------+
| aa
| NULL | bb
|
+------+------+------+
1 row in set (Elapsed: 00:00:00.02)
4.
修改表结构字段为允许null,default '':

GBase 8a MPP Cluster 最佳实践
5 FAQ
文档版本(2022-02-11)
南大通用数据技术股份有限公司
146
gbase> create table t1(c1 varchar(10),c2 varchar(10) default '',c3 varchar(10));
Query OK, 0 rows affected (Elapsed: 00:00:01.34)
gbase> show create table t1;
+-------+--------------------------------------------------------------------------
-----------------------------------------------------------------------------------
--------------------------+
|
Table
|
Create
Table
|
+-------+--------------------------------------------------------------------------
-----------------------------------------------------------------------------------
--------------------------+
| t1
| CREATE TABLE "t1" (
"c1" varchar(10) DEFAULT NULL,
"c2" varchar(10) DEFAULT '',
"c3" varchar(10) DEFAULT NULL
) ENGINE=EXPRESS DEFAULT CHARSET=utf8 TABLESPACE='sys_tablespace' |
+-------+--------------------------------------------------------------------------
-----------------------------------------------------------------------------------
--------------------------+
1 row in set (Elapsed: 00:00:00.01)
gbase> load data infile 'sftp://gbase@192.168.105.214
/home/gbase/t1.txt' into table t1 fields terminated by '|';
Query OK, 1 row affected (Elapsed: 00:00:01.26)
Task 140 finished, Loaded 1 records, Skipped 0 records
gbase> select * from t1;
+------+------+------+
| c1
| c2
| c3
|
+------+------+------+
| aa
|
| bb
|
+------+------+------+
row in set (Elapsed: 00:00:00.05)

GBase 8a MPP Cluster 最佳实践
5 FAQ
文档版本(2022-02-11)
南大通用数据技术股份有限公司
147

参数说明:在数据库实例为只读模式下,控制是否可以修改pgxc_node 系统表。

GBase 8c V5 开发者手册
南大通用数据技术股份有限公司
1394
取值范围:布尔型。参数修改请参考表15-1 进行设置。

on 表示开启可以修改pgxc_node 系统表功能。

off 表示关闭可以修改pgxc_node 系统表功能。
默认值:on

功能说明
快速UPDATE 模式,
即先删除符合更新条件的数据,
然后再向表的末尾插入需要
更新的新数据。
相对于传统的行存储数据库来说,
列存储的数据中UPDATE 更新少量行时,
操作
效率相对来说是耗时的,
因此,
GBase 8a MPP Cluster 针对此特点,
专门设计了快
速UPDATE 模式,用以提高数据更新操作。
快速UPDATE 模式目前只支持针对表对象的操作。
要使用快速UPDATE 模式,必须在客户端使用SET gbase_fast_update =1;的命令
打开快速UPDATE 模式。更新批量数据的时候建议使用默认UPDATE 模式,更
新少量数据的时候建议使用快速UPDATE 模式。

GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-04-10)
南大通用数据技术股份有限公司
1061
SET gbase_fast_update =0;表示关闭快速UPDATE 模式。
SET gbase_fast_update =1;表示开启快速UPDATE 模式。
示例
示例1:开启快速UPDATE 模式。
gbase> CREATE TABLE t1 (f_1 int);
Query OK, 0 rows affected
gbase> INSERT INTO t1 values(1),(2),(3);
Query OK, 3 rows affected
Records: 3
Duplicates: 0
Warnings: 0
gbase> SELECT * FROM t1;
+------+
| f_1
|
+------+
|
1 |
|
2 |
|
3 |
+------+
3 rows in set
gbase> SET gbase_fast_update = 1;
Query OK, 0 rows affected
gbase> UPDATE t1 SET f_1 = 10 WHERE f_1= 1;
Query OK, 1 row affected
Rows matched: 1
Changed: 1
Warnings: 0
gbase> SELECT * FROM t1;
+------+
| f_1
|
+------+
|
2 |
|
3 |
|
10 |
+------+
3 rows in set
gbase> SET gbase_fast_update = 0;
Query OK, 0 rows affected

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