Hive表文本文件上传特殊字符

时间:2017-11-01 11:26:08

标签: hiveql

我有一个管道分隔的文本文件,我试图从中创建一个Hive外部表。然而,在COL_2中,对于特定值(d'Algerie),'角色正被一个盒子取代,即d�Algerie。我尝试了一些在线解决方案,例如:

ALTER TABLE pi_aarrepos_analysis.tbl_input_accounts SET SERDEPROPERTIES ('serialization.encoding'='GBK'); 

但是我没有保持这个特殊角色的运气。以下是我的代码:

DROP TABLE IF EXISTS TABLE_NAME purge;
CREATE EXTERNAL TABLE IF NOT EXISTS TABLE_NAME
(
COL_1   STRING,
COL_2   STRING,
COL_3   STRING,
COL_4   STRING,
COL_5   STRING,
COL_6   STRING,
COL_7   STRING,
COL_8   STRING,
COL_9   STRING,
COL_10  STRING,
COL_11  STRING
)
ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' 
STORED AS TEXTFILE 
LOCATION '/location/' 
tblproperties ("skip.header.line.count"="1");

LOAD DATA INPATH '/location/' INTO TABLE TABLE_NAME;

有人知道保留表格中特殊字符的任何解决方案吗?

编辑: 输出:

select "${system:file.encoding}"; 

给了我" UTF-8"

1 个答案:

答案 0 :(得分:0)

这不是我的答案。一位同事能够提供帮助,所以这是她的解决方案,所以很有信心,但我认为重要的是要知道以备将来参考。文本文件是ANSI编码的,因此她建议在create table命令和上面的load data语句之间放入以下行:

ALTER TABLE TABLE_NAME SET SERDEPROPERTIES ('serialization.encoding'='CP1252');