【GBase 8a MPP数据库集群】加载导出中对于空值处理方式

使用 NULL_VALUES 指定空值字符加载数据文件

建表语句

CREATE TABLE "test" ( "column_1" int(11) DEFAULT NULL, "column_2" varchar(10) DEFAULT
NULL, "column_3" varchar(20) DEFAULT NULL)

数据文件

43452|sisoekso|mozoa,a
59432|gg|laqpqpd
03890|lqps,rpd|gg
加载过程
gbase> load data infile 'http://192.168.153.32/1.txt' into table test fields terminated
by '|' null_value 'gg';
Query OK, 3 rows affected
Task 25 finished, Loaded 3 records, Skipped 0 records

查询入库数据

gbase> select * from test;
+----------+----------+----------+
| column_1 | column_2 | column_3 |
+----------+----------+----------+
| 59432 | NULL | laqpqpd |
| 43452 | sisoekso | mozoa,a |
| 3890 | lqps,rpd | NULL |
+----------+----------+-----------+
3 rows in set

使用 NULL_VALUES 指定空值字符导出数据文件

在非定长导出时,可以使用 NULL_VALUE 参数指定导出的空值标识符。
在定长导出时,字段中的 NULL 值都是根据字段宽度全部使用空格补齐。

指定 NULL_VALUE 值。
示例中用到的表及数据:

CREATE TABLE "gt" ("n" int(11) DEFAULT NULL, "v" varchar(5) DEFAULT NULL);
INSERT INTO gt VALUES(10, NULL),(NULL, 'bb');
gbase> select * from gt into outfile '/home/davies/a' null_value 'aaaa';
Query OK, 2 rows affected (Elapsed: 00:00:00.00)

导出文件为:

$ cat a
10 aaaa
aaaa bb
可见导出时把 NULL 值转换成了字符串 aaaa。

数据中含有NULL值的导出文件默认处理方式

如果待导出数据中某字段的内容为 NULL 值,则该字段导出的 NULL 文本为“当前转义符+ N”。
默认情况下的转义符为“ \”,因此字段导出的 NULL 文本为“ \N”。

示例中用到的表及数据:

DROP TABLE IF EXISTS gs;
CREATE TABLE gs (a int DEFAULT NULL, b varchar(20) DEFAULT NULL);
INSERT INTO gs VALUES(NULL,NULL);
INSERT INTO gs VALUES(1, 'GBase');
  • 示例 1:转义符默认为“ \”,则“ NULL”值导出的结果为“ \N”。
gbase> SELECT * FROM gs INTO OUTFILE '/home/gbase/null_1.txt';
Query OK, 2 rows affected
查看导出文件:
$ cat null_1.txt
\N \N
1 GBase
  • 示例 2:如果在导出语句中指定了字段包围符,则对 NULL 值不起作用。
gbase> SELECT * FROM gs INTO OUTFILE '/home/gbase/null_2.txt' FIELDS ENCLOSED BY '"';
Query OK, 2 rows affected
查看导出文件:
$ cat null_2.txt
\N \N
"1" "GBase"
  • 示例 3:设置转义符为“ |”,则“ NULL”值导出的结果为“ |N” 。
gbase> SELECT * FROM gs INTO OUTFILE '/home/gbase/null_3.txt' FIELDS ESCAPED BY
'|';
Query OK, 2 rows affected
查看导出文件:
$ cat null_3.txt
|N |N
1 GBase
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值