最近做测试遇到一个hive特殊分隔符的问题--oracle导出的数据文件分隔符符为0x1B导入的问题,0x1B是不可见字符,测试了很久才让hive识别到,
原因是hive指定分隔符除了直接写明确的分隔符时,不能识别十六进制的0x1B要转换成八进制的表示,且必须在前面加0
给的分隔符是十六进制 0x1B,对应十进制27,转换成八进制为33,故分隔符为033,注意,前面的0不能少,否则无法识别
指定分隔符语法为 :FIELDS TERMINATED BY ‘\033‘
附样例:
样例数据
2012-10-310007010012610402170100***104020001个人通知***款利息支出6012012-10-311
2012-08-310007010012610601170100***6106010001应付活****存款息6012012-08-311
2012-08-310007010012610701170100***26107010001三个月***储蓄存款利息支出6012012-08-311
ue中查看,
复制到UE ctrl+H查看
建表语句
create external table T_CAS_ACCR_OC_BOOK
(
set_date DATE,
oper_no VARCHAR2(8),
seqno NUMBER(8),
sub_seqno NUMBER(8),
act_seqno NUMBER(8),
trans_bran_code VARCHAR2(10),
sub_code VARCHAR2(8),
cur_code NUMBER(8),
acct_no VARCHAR2(32),
acct_name VARCHAR2(120),
acct_type NUMBER(5),
cust_no VARCHAR2(30),
return_cause VARCHAR2(60),
chk_no VARCHAR2(8),
auth_no VARCHAR2(8),
flag VARCHAR2(1),
last_mod_date DATE,
acct_class NUMBER(4)
)
FIELDS TERMINATED BY ‘\033‘
LOCATION ‘/tmp/t_cas_accr_oc_book‘;