hive建表分隔符问题

默认的分隔符:

hive 默认的字段分隔符为ascii码的控制符\001,建表的时候用fields terminated by ‘\001’,如果要测试的话,造数据在vi 打开文件里面,用ctrl+v然后再ctrl+a可以输入这个控制符\001。按顺序,\002的输入方式为ctrl+v,ctrl+b。以此类推。

指定特定的特殊符号作为分隔符:

CREATE TABLE test(id int, name string ) 
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' 
LINES TERMINATED BY '\n'
STORED AS TEXTFILE;

上面使用了’\t’作为了字段分隔符,’\n’作为换行分隔符。特殊字符无需转义

使用多字符作为分隔符:

假设我们使用【##】来作为字段分隔符,【\n】作为换行分隔符,则这里有两个方法:

1、使用MultiDelimitSerDe的方法来实现:

CREATE TABLE test(id int, name string) 
ROW FORMAT SERDE 'org.apache.hadoop.hive.contrib.serde2.MultiDelimitSerDe' WITH SERDEPROPERTIES ("field.delim"="##")
 LINES TERMINATED BY '\n'
 STORED AS TEXTFILE;

2、使用RegexSerDe的方法实现:

CREAET TABLE test(id int, name string ) 
ROW FORMAT SERDE 'org.apache.hadoop.hive.contrib.serde2.RegexSerDe' WITH SERDEPROPERTIES ("input.regex" = "^(.*)\\#\\#(.*)$") 
LINES TERMINATED BY '\n'
STORED AS TEXTFILE;
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值