hive-load带特殊字符的分隔数据cause off position

lbsnaicq  于 2021-06-02  发布在  Hadoop
关注(0)|答案(1)|浏览(537)

假设我想在配置单元中创建一个包含4列的简单表,并加载一些管道分隔的数据。

  1. CREATE table TEST_1 (
  2. COL1 string,
  3. COL2 string,
  4. COL3 string,
  5. COL4 string
  6. )
  7. ROW FORMAT DELIMITED
  8. FIELDS TERMINATED BY '|'
  9. ;

原始数据:

  1. 123|456|Dasani Bottled \| Water|789

我对col3值的期望是“dasani瓶装水”,它在中间有一些特殊字符“\”,因此导致hive table column off位置从col3开始,因为我创建表时使用“\”作为分隔符。特殊字符\ |中确实有管道字符。
是否有任何方法可以解决此问题,以便配置单元可以正确加载数据?
谢谢你的帮助。

9rygscc1

9rygscc11#

您可以添加 ESCAPED BY 子句来允许字符转义

  1. CREATE table TEST_1 (
  2. COL1 string,
  3. COL2 string,
  4. COL3 string,
  5. COL4 string
  6. )
  7. ROW FORMAT DELIMITED
  8. FIELDS TERMINATED BY '|' ESCAPED BY '\'
  9. ;

从配置单元文档
通过使用“escaped by”子句(例如由“\”转义)为分隔符字符启用转义如果要处理可以包含这些分隔符字符的数据,则需要转义。
也可以使用“null defined as”子句指定自定义空格式(默认值为“\n”)。

相关问题