版权声明:学习交流为主,未经博主同意禁止转载,禁止用于商用。 https://blog.csdn.net/u012965373/article/details/83001914
问题:
1.字段、表名是中文,表名,数据库是中文名,怎么解决?
2.字段、表名特殊的字符包括 \, (), $ ...,怎么解决?
3.类似于func(xxx), 这是一个字段名字,不是一个函数嵌套字段,但是在hive查询引擎的解析处理中,被解析为一个udf函数和一个字段名字,怎么解决?
解决方法:
1.基础解决方案,使用反引号例如: " `` "
create table hehe(`来试试` string);
create table `我是一个正经的表名`(`我是一个正经的字段` int);
2.如果出现上面问题3的情况,经过研究Hive执行原理,当一个字段有一个别名,类似于
select tb_id as id from table_name limit 10;
其中的tb_id的别名id,那么可以判断出来前面是一个字段,然后再去元数据库中匹配这个字段是否在元数据库中。
因此问题三我们可以使用 select `func(xxx)` as b from ods.table_name limit 10 来查询数据。