DM8数据库使用dmfldr导入导出数据时NULL_MODE参数对NULL字符串/NULL值的处理

简介:

dmfldr工具可以把指定格式的文本数据导入表中,也可将表的数据导出到指定格式的文本文件中

对NULL处理的参数是null_mode:
载入时NULL字符串是否处理为NULL,载出时空值是否处理为NULL字符串 (默认值FALSE)

第一部分: 测试导入时,对文本中NULL字符串的处理

1.指定null_mode为true

创建测试表test1

drop table if exists test1;
create table test1(a int, b varchar(8));

编辑文件test.txt,存放路径为/opt/data/test.txt,文件内容如下

1|NULLA
2|null
3|NULL
4|normal

创建dmfldr的控制文件/opt/data/test1.ctl,文件内容如下

LOAD DATA INFILE '/opt/data/test.txt' INTO TABLE test1 FIELDS '|' ( a, b )

进入数据库安装目录的bin目录下,使用dmfldr进行数据载入,指定参数null_mode=true(参数值为true, null/NULL值在导入时处理为NULL)
在这里插入图片描述

./dmfldr userid=SYSDBA/SYSDBA@localhost:5236 control=\'/opt/data/test1.ctl\' null_mode=true

查询test1表的数据,null字符串导入表时当做空处理

select * from test1;

在这里插入图片描述

select a, ifnull(b,'此处的值是NULL') as b_new from test1;

在这里插入图片描述
2.指定null_mode为false

创建测试表test2

drop table if exists test2;
create table test2(a int, b varchar(8));

创建dmfldr的控制文件/opt/data/test2.ctl,文件内容如下

LOAD DATA INFILE '/opt/data/test.txt' INTO TABLE test2 FIELDS '|' ( a, b )

使用dmfldr进行数据载入,指定参数null_mode=false(参数值为false,null/NULL值在导入时被处理为字符串)

./dmfldr userid=SYSDBA/SYSDBA@localhost:5236 control=\'/opt/data/test2.ctl\' null_mode=false

查询test2表的数据,null字符串导入表时当做字符串处理

select * from test2;

在这里插入图片描述

select a, ifnull(b,'此处的值是NULL') as b_new from test2;

在这里插入图片描述

第二部分: 测试导出时,对表中NULL值的处理

1.指定null_mode为true

创建dmfldr的控制文件/opt/data/test3.ctl,文件内容如下

LOAD DATA INFILE '/opt/data/test_out1.txt' INTO TABLE test1 FIELDS '|' ( a, b )

查看表test1的数据
在这里插入图片描述

使用dmfldr进行数据导出,指定参数null_mode=true(ture表示NULL值导出为NULL字符串)

./dmfldr userid=SYSDBA/SYSDBA@localhost:5236 control=\'/opt/data/test3.ctl\' NULL_MODE=true mode=\'out\'

查看/opt/data/test_out1.txt内容如下,NULL值导出时为NULL字符串
在这里插入图片描述
2. 指定null_mode为false

创建dmfldr的控制文件/opt/data/test4.ctl,文件内容如下

LOAD DATA INFILE '/opt/data/test_out2.txt' INTO TABLE test1 FIELDS '|' ( a, b )

使用dmfldr进行数据导出,指定参数null_mode=false(false表示NULL值导出时处理为空白)

./dmfldr userid=SYSDBA/SYSDBA@localhost:5236 control=\'/opt/data/test4.ctl\' NULL_MODE=false mode=\'out\'

查看/opt/data/test_out2.txt内容如下,NULL值导出时为空白
在这里插入图片描述

第三部分: 测试导出时,对表中null字符串的处理

创建dmfldr的控制文件/opt/data/test5.ctl,文件内容如下

LOAD DATA INFILE '/opt/data/test_out3.txt' INTO TABLE test2 FIELDS '|' ( a, b )

查看表test2的数据(表中的null/NULL都是字符串)
在这里插入图片描述
使用dmfldr进行数据导出,指定参数null_mode=true

./dmfldr userid=SYSDBA/SYSDBA@localhost:5236 control=\'/opt/data/test5.ctl\' NULL_MODE=true mode=\'out\'

使用dmfldr进行数据导出,指定参数null_mode=false

./dmfldr userid=SYSDBA/SYSDBA@localhost:5236 control=\'/opt/data/test5.ctl\' NULL_MODE=false mode=\'out\'

查看/opt/data/test_out3.txt内容如下,null/NULL字符串原模原样处理
回顾null_mode参数在导出时表示的意思:空值是否处理为NULL字符串。表中没有空值(NULL),所以按字符串输出
在这里插入图片描述更多资讯请上达梦技术社区了解:https://eco.dameng.com

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值