最近遇到一个问题,oracle根据where表达式抽取数据到hive中,总是提示列名为unknown identifier. 很奇怪明明列名就是对的,但就是识别不了。
直接连上oracle,执行select sql竟然也提示同一错误,从来没有接触过oracle,实在想不出是什么原因,但换一张表查询ok。对比一下发现唯一区别在于成功的表表名是大写。
原来oracle支持两种identifier,双引号扩起来的(quoted identifier)和 非双引号扩起来的(unquoted identifier). 表名是小写说明数据表在定义的时候,一定是引号扩起来的,则查询的时候必须带上引号;但如果表名是大写,则不需要用双引号扩起来。总之,只要带上引号怎么都不会错,就是太繁琐。