模拟生产环境下数据格式,再现异常情景:
 

Notepad++怎样输入字符[NUL]?

安装 Hex-Editor 插件:

HexEditor插件用于在notepad++中查看16进制文件,只需要将此dll放入notepad++安装目录下plugins文件夹下,重启notepad++即可。

使用方法: 可以切换到Hex模式,输入00,再切换回来。
(使用notepad++打开16进制文件,然后单击菜单栏的‘H’按钮,即可转换,如果想转回来,再按一次‘H’按钮)
问题描述:
在文本文件中,有时候会包含一些空字符或^@:
源数据在windows平台上Notepad++打开情形如下:
源数据在Linux Centos6.5平台上vim打开情形如下:
 
在使用Tunnel将生产环境下的文本数据上传到ODPS表过程中,由于源数据某些字段为NUL或^@,报错无法正确读取,异常是:导入数据列与目标表中列不匹配(not match).

问题原因:
可能是由于生产环境下业务需要,无效数据打上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选项:直接作用源文件,源文件将被修改)

替换后效果截图如下:

 

使用tunnel遇到空数据问题(建立测试数据):

在一行中若有两个逗号,表明在中间有一个缺失值,test.txt文本测试数据如下:
201207092314,,rubbyhao
201207092313,,babyliy
结论:对于文本文件中''导入到ODPS表中默认插入式null值
 
补充一个知识点:
find . -type f -name 文件名 -exec ./changerepository.sh {} /;

Tunnel上传遇到字符[NUL]问题的更多相关文章

  1. php+超大文件上传

    1 背景 用户本地有一份txt或者csv文件,无论是从业务数据库导出.还是其他途径获取,当需要使用蚂蚁的大数据分析工具进行数据加工.挖掘和共创应用的时候,首先要将本地文件上传至ODPS,普通的小文件通 ...

  2. JS大文件上传断点续传解决方案

    1 背景 用户本地有一份txt或者csv文件,无论是从业务数据库导出.还是其他途径获取,当需要使用蚂蚁的大数据分析工具进行数据加工.挖掘和共创应用的时候,首先要将本地文件上传至ODPS,普通的小文件通 ...

  3. ASP.NET如何实现断点续传的上传、下载功能?

    1 背景 用户本地有一份txt或者csv文件,无论是从业务数据库导出.还是其他途径获取,当需要使用蚂蚁的大数据分析工具进行数据加工.挖掘和共创应用的时候,首先要将本地文件上传至ODPS,普通的小文件通 ...

  4. js怎么上传文件夹

    1 背景 用户本地有一份txt或者csv文件,无论是从业务数据库导出.还是其他途径获取,当需要使用蚂蚁的大数据分析工具进行数据加工.挖掘和共创应用的时候,首先要将本地文件上传至ODPS,普通的小文件通 ...

  5. js+php大文件分片上传

    1 背景 用户本地有一份txt或者csv文件,无论是从业务数据库导出.还是其他途径获取,当需要使用蚂蚁的大数据分析工具进行数据加工.挖掘和共创应用的时候,首先要将本地文件上传至ODPS,普通的小文件通 ...

  6. asp.net (web)选择文件夹 上传文件

    1 背景 用户本地有一份txt或者csv文件,无论是从业务数据库导出.还是其他途径获取,当需要使用蚂蚁的大数据分析工具进行数据加工.挖掘和共创应用的时候,首先要将本地文件上传至ODPS,普通的小文件通 ...

  7. 怎么实现超大文件上传 2-3GB

    1 背景 用户本地有一份txt或者csv文件,无论是从业务数据库导出.还是其他途径获取,当需要使用蚂蚁的大数据分析工具进行数据加工.挖掘和共创应用的时候,首先要将本地文件上传至ODPS,普通的小文件通 ...

  8. JS大文件上传解决方案

    1 背景 用户本地有一份txt或者csv文件,无论是从业务数据库导出.还是其他途径获取,当需要使用蚂蚁的大数据分析工具进行数据加工.挖掘和共创应用的时候,首先要将本地文件上传至ODPS,普通的小文件通 ...

  9. B/S选择文件夹上传

    1 背景 用户本地有一份txt或者csv文件,无论是从业务数据库导出.还是其他途径获取,当需要使用蚂蚁的大数据分析工具进行数据加工.挖掘和共创应用的时候,首先要将本地文件上传至ODPS,普通的小文件通 ...

随机推荐

  1. apache Rewrite配置(转)

    1.Rewrite规则简介: Rewirte主要的功能就是实现URL的跳转,它的正则表达式是基于Perl语言.可基于服务器级的(httpd.conf)和目录级的 (.htaccess)两种方式.如果要 ...

  2. react系列(一)JSX语法、组件概念、生命周期介绍

    JSX React中,推出了一种新的语法取名为JSX,它给了JS中写HTML标签的能力,不需要加引号.JSX的语法看起来是一种模板,然而它在编译以后,会转成JS语法,只是书写过程中的语法糖. JSX的 ...

  3. 一点一点看JDK源码(五)java.util.ArrayList 后篇之removeIf与Predicate

    一点一点看JDK源码(五)java.util.ArrayList 后篇之removeIf与Predicate liuyuhang原创,未经允许禁止转载 本文举例使用的是JDK8的API 目录:一点一点 ...

  4. Oracle 体系结构二 内存结构

    Oracle实例由共享内存块(SGA)以及大量的后台进程构成. SGA必须包含的数据结构: 数据库缓冲区缓存 日志缓冲区 共享池 可选的数据结构: 大池 JAVA池 流池 其他缓冲区缓存池 用户会话还 ...

  5. ios之coredata(一)

    下面开始学习一下CoreData. Core Data不是一个关系型数据库,也不是关系型数据库管理系统(RDBMS).Core Data 为数据变更管理.对象存储.对象读取恢复的功能提供了支持. 它可 ...

  6. 常用EL函数汇总 fn:contains ,fn:substring,fn:substringAfter...

    由于在JSP页面中显示数据时,经常需要对显示的字符串进行处理,SUN公司针对于一些常见处理定义了一套EL函数库供开发者使用.这些EL函数在JSTL开发包中进行描述,因此在JSP页面中使用SUN公司的E ...

  7. vue-cli 3.0 使用axios配置跨域访问豆瓣接口

    vue-cli 3.0 配置axios跨域访问豆瓣接口 自己做的小demo 由于豆瓣api跨域问题,因此不能直接通过ajax请求访问,我们通过vue-cli提供给我们的代理 进行配置即可, 在根目录下 ...

  8. ziplist之详细分析

    压缩列表ziplist ziplist是一种连续,无序的数据结构.压缩列表是 Redis 为了节约内存而开发的, 由一系列特殊编码的连续内存块组成的顺序型(sequential)数据结构. 组成 属性 ...

  9. 小心使用replicate_do_db和replicate_ignore_db

    内容来源于网络 使用replicate_do_db和replicate_ignore_db时有一个隐患,跨库更新时会出错 如设置 replicate_do_db=testuse mysql;updat ...

  10. Python3爬虫(十五) 代理

    Infi-chu: http://www.cnblogs.com/Infi-chu/ 一.设置代理 1.urllib #HTTP代理类型 from urllib.error import URLErr ...