mysql - 执行Hive的`SHOW CREATE TABLE`语句,结果有中文乱码
高洛峰
高洛峰 2017-04-17 11:41:54
[MySQL讨论组]

这个问题已经困扰了我很多天了,一直在网上找不到答案。具体问题是这样的:

我希望得到hive中表的建表语句,所以在hive cli里面执行show create table语句,但是发现得到的结果中,中文是乱码,而英文不是乱码。类似这样:

hive> show create table table_test;
OK
CREATE  TABLE `table_test`(
  `fid` bigint COMMENT '��(q(UID)', 
  `fname` string COMMENT '
�', 
  `fcompanyid` bigint COMMENT 'l�
  `fsn` string COMMENT '�K�:SN/IMEI', 

(...etc.)

Time taken: 0.321 seconds, Fetched: 45 row(s)

后面我查了一些资料,发现与hive的metastore的MySQL编码有关,所以我将MySQL中的相关编码从latin1更改为UTF-8。这下,在Hive中执行DESC table的语句是可以正确的显示中文的,但是SHOW CREATE TABLE语句仍然还是这样的乱码。

我尝试在Java中取得这些结果并用如下的语句转码,但是转完的文字更不对了……

String decodedStr = new String(rawStr.getBytes("ISO-8859-1"), "UTF-8");
高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

全部回复(1)
迷茫

这是一个社区bug:
HIVE-11837

另外,社区对中文的支持比较弱,尽量避免在SQL语句中写中文,实际数据有中文没关系。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号