最近做測試遇到乙個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';
Hive的列分隔符和行分隔符
在建立hive表時,預設行分隔符 a 列分隔符 n 這兩項也是可以設定的。在實際開發中,一般預設使用預設的分隔符,當然有些場景下也會自定義分隔符。spark hive use test db 建立外部表 create external table test tb user id bigint com...
hive實現多分隔符
一 測試外表 create external 外表標識 table tmp.deli tmp 0117 z1 string,z2 string partitioned by pt string comment yyyymm row format serde org.apache.hadoop.hiv...
hive的列分隔符和行分隔符的使用
目錄 一 hive中預設的分割符如下 二 分隔符的指定與使用 三 建好表之後更改字段分隔符 分隔符描述 n 行分隔符 a欄位分隔符 001 barray struct的元素間的分隔符,map的鍵值對與鍵值對間分隔符 002 cmap中鍵與值之間的 分隔符 003 hive中在建立表時,一般會根據匯入...