我有一个管道分隔的文本文件,我试图从中创建一个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"
答案 0 :(得分:0)
这不是我的答案。一位同事能够提供帮助,所以这是她的解决方案,所以很有信心,但我认为重要的是要知道以备将来参考。文本文件是ANSI编码的,因此她建议在create table命令和上面的load data语句之间放入以下行:
ALTER TABLE TABLE_NAME SET SERDEPROPERTIES ('serialization.encoding'='CP1252');