博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Tunnel上传遇到字符[NUL]问题
阅读量:6113 次
发布时间:2019-06-21

本文共 993 字,大约阅读时间需要 3 分钟。

模拟生产环境下数据格式,再现异常情景:
Notepad++怎样输入字符[NUL]?
安装 Hex-Editor 插件:
HexEditor插件用于在notepad++中查看16进制文件,只需要将此dll放入notepad++安装目录下plugins文件夹下,重启notepad++即可。 
使用方法: 可以切换到Hex模式,输入00,再切换回来。
(使用notepad++打开16进制文件,然后单击菜单栏的‘H’按钮,即可转换,如果想转回来,再按一次‘H’按钮)
问题描述:
在文本文件中,有时候会包含一些空字符98ed85a0dbba2bf7551bc05414f338196a59b17b
^@
源数据在windows平台上Notepad++
打开情形如下
b2f7e096efa01580b1d578b09018e4eb16a67f94
源数据在Linux Centos6.5平台上vim打开情形如下:
c5988a9af06de8b851b8f47813cd5eede9887abb
在使用Tunnel将生产环境下的文本数据上传到ODPS表过程中,由于源数据某些字段为NUL或
^@
,报错无法正确读取,
异常是:
导入数据列与目标表中列不匹配(not match)
.
da773723341ff25152f46774d617635b5eedaa7d
问题原因:
可能是由于生产环境下业务需要,无效数据打上NUL字符或
^@标记
解决思路:
想办法把源数据中存在NUL或
^@
过滤或替换成空值。
具体
解决方案如下:
 
 
字符在Linux平台上用vim编辑器打开后显示^@,用sed命令将^@替换成空
(sed命令组合很强大,要注意备份文件)
sed 's/[\x00]//g' test.txt > test.txt.bak
其中\x00表示二位十六进制
如果不想备份直接替换加上参数-i
sed -i 's/[\x00]//g' test.txt
(
-
i选项:直接作用源文件,源文件将被修改
)
替换后效果截图如下:
4cf6a6d2d178483eed7e1ef0c82178207ecb2e7d
使用tunnel遇到空数据问题(建立测试数据):
在一行中若有两个逗号,表明在中间有一个
缺失值,
test.txt文本测试数据如下:
201207092314,,rubbyhao
201207092313,,babyliy
3f52c09631a095b75fe03fa29e6dcf92a369e727
201207092314 null rubbyhao 20160516
201207092313 null babyliy 20160516
结论:对于文本文件中''导入到ODPS表中默认插入式null值
补充一个知识点:
find . -type f -name 文件名 -exec ./changerepository.sh {} /;

转载地址:http://vgjka.baihongyu.com/

你可能感兴趣的文章
TenpayPasswordCtrl
查看>>
Python-Tips
查看>>
Apache 强制全站https请求(配置ssl证书)
查看>>
laravel源码分析之--Application 实例化
查看>>
Node.js源码解析-启动-js部分
查看>>
DOM操作--你究竟知道多少
查看>>
react组件生命周期理解
查看>>
flex布局中父容器属性部分演示效果
查看>>
前段开发环境部署(1)--nvm(node版本管理器)
查看>>
Javascript数组的“字符串”索引 & for…in 和 for…of的区别
查看>>
mysql函数集
查看>>
android效果集 - 收藏集 - 掘金
查看>>
cartcontrol.vue购物车操作按钮
查看>>
java的线程、锁相关
查看>>
国产PHP框架——ThinkPHP各功能开发系列一 环境搭建
查看>>
微信开源mars源码分析2—上层samples分析(续)
查看>>
六大设计原则 -- 5.迪米特法则
查看>>
LC 267 Palindrome Permutation II
查看>>
PHP --- Session
查看>>
在多主机Docker网络中运行XtraDB Cluster
查看>>