默认情况下,hive仅支持单个字符来进行列分割。实际工作中,为了防止实际数据中,包含列分隔符,常使用多个字符串来分割数据列。
可以在hive建表语句中,使用built-in的 org.apache.hadoop.hive.contrib.serde2.MultiDelimitSerDe类, 来使你的表支持多字符分割列。
Hive测试版本为:hive-1.1.0-cdh5.7.1,其他版本需自行测试
drop table test;
create external table test (c1 string, c2 string,c3 string)
row format SERDE'org.apache.hadoop.hive.contrib.serde2.MultiDelimitSerDe'
with serdeproperties(
"field.delim"="^|~"
)
location '/user/hive/warehouse/test;
load data local inpath '/home/david/test/test_hive_data/multichar_separator_raw.txt' into table test;
select * from test;