博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
GP通过外部表装载数据时遇到ERROR:extra data after last expected column解决方法
阅读量:6969 次
发布时间:2019-06-27

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

--一般通过hive -e导出文本时,我都习惯把比较容易出错的String类型字段做一次regexp_replace()处理,因为如果字段里面含有制表符,那是一件很坑很坑的事

hive -e "select regexp_replace(String_Col1,'\t',''),Date_Col2,Integer_Col3 ... from hivedb.export_table" | sed 's/\t/\x01/g;s/\\/\\\\/g;s/\x00//g'  >.../export_table.txt

--GP中新建外部表,根据之前把\t替换掉的分隔符x01来分隔,屡试不爽,成功率99.99%

drop external table if exists product_ext.export_table_ext;create external table product_ext.export_table_ext(String_Col1 varchar(1000),Date_Col2 date,Integer_Col3 integer,...)LOCATION ('gpfdist://xxx.xxx.xxx.xxx:port/.../export_table.txt')FORMAT 'TEXT' (DELIMITER E'\x01'); --irview_vt

--即使sed 's/\t/\x01/g;s/\\/\\\\/g;s/\x00//g'处理过,分隔符按照\x01处理,今天还是遇到了0.01%的失败,下面是解决方法:

--根据错误信息,定位到含有出错字符串的行,备份到一个临时文件,实际上也就发现了一行有错误,没办法,只能查找删除它

more rid_mac_201735to38w.txt | grep 'jQTIJWkiyytg97PCjh5U' > rid_mac_falsedata.txt

--把包含错误(也就是通过外部表映射到内部表出错)信息的行删除掉

sed -i '/jQTIJWkiyytg97PCjh5U/d' rid_mac_201735to38w.txt

--此时,就能正常插入了  

Query returned successfully: 302060132 rows affected, 26.6 secs execution time.

附.

  

  

转载于:https://www.cnblogs.com/binguo2008/p/7682783.html

你可能感兴趣的文章
【转】libvirt kvm 虚拟机上网 – Bridge桥接
查看>>
c/c++ helloworld
查看>>
xopy写批处理的忌讳..
查看>>
为程序添加系统上下文菜单
查看>>
css色彩对应值
查看>>
XWiki 4.3 正式版发布
查看>>
java中finally和return的执行顺序
查看>>
.net微信公众号开发——群发消息
查看>>
纪念逝去的岁月——C++实现一个队列(使用类模板)
查看>>
GO语言练习:多返回值函数
查看>>
让x86的android模拟器能模拟arm架构系统
查看>>
初学Struts2-自定义拦截器及其配置
查看>>
关于js中的几个小问题。
查看>>
hdoj-2058-the sum problem
查看>>
MySql基础整理
查看>>
Spring Bean Scope 有状态的Bean 无状态的Bean
查看>>
php 批量修改文件格式或重命名
查看>>
Android数据加密之Aes加密
查看>>
InputStream,String相互转化
查看>>
Atitit.gui api自动化调用技术原理与实践
查看>>