计算报错ORA-00904——竟和大小写敏感有关系

2993
1

tangmq 数据达人Lv4

发表于2019-7-17 12:08

楼主
问题:某客户把环境从sqlserver数据库迁移到oracle之后,所有报表计算报错



如果把BI生产的sql语句,数据库表名和字段,都带上双引号,就可以正常在数据库中执行,如下图:


为啥此客户的oracle中,sql查询的时候,都需要带上引号呢?(我本地查询表,都是直接查,不需要加引号)
原因:oracle 一般的建表语句,不带引号,即,大小写不敏感;如果建表语句带上双引号,则表示大小写敏感;
此客户场景,从sql数据库将表迁移到oracle,sqlserver 和sybase一般都是默认自带双引号的,迁移时如果没注意,迁移到oracle的库表,都带引号,则认为,所有这些表是大小写敏感。
再来看BI的计算引擎,BI通用版不支持特殊字符的表名字段名,(除了英文和数字外的均为特殊字符,双引号、中文字段名,都视为特殊字符,且暂不支持),BI计算引擎生成的sql查询语句,表名和字段名,都不带双引号。这就导致,查询语句和数据库中(库中带引号)不匹配,就报了这个ORA-00904
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
ORA-00904这个报错可以百度到很多资料:大部分情况下,此错误是由于引用了不存在的列名导致的。比如select name from Studtent 当studeng表中无name列时,系统就会报此错误。
解决思路是,确定数据库中引用到的列和自己sql中书写的列名是否一致。如有不同,修改过来,重新测试应该可以解决问题。
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

BI中如何处理这个情况:
方案一:把所有的库表重新建一次,注意,新建的库表名不要带引号;
方案二:基于现在的库表,建视图,注意,新建的视图表名不要带引号;例如:create view  xxxx as select "BussType" as busstype ,....from yyyy


划重点:
BI的sql引擎,生成的sql语句,不带引号(即,大小写不敏感,且不支持中文字段名);
oracle中,建表带双引号,即视为大小写敏感。BI连库计算就会出现ORA-00904错误,需要改成大小写不敏感(不带双引号的那一种啦~~~)
1个回答

只看楼主

辰哥 管理员

发表于2019-12-5 15:10

只看该作者

取消 关注该作者的回复

沙发

感谢分享

登录后可回答问题,请登录注册

快速回复 返回顶部 返回列表

小时

全天响应

分钟

快速处理问题

工程师强势助力

明星产品
解决方案
联系合作

400咨询:400-0011-866

技术支持QQ:400-0011-866(工作日9:00-18:00)

产品建议邮箱yixin@esensoft.com

关注我们

扫TA学习更多干货

一对一专家交流

版权所有© 2006-2024 北京亿信华辰软件有限责任公司 京ICP备07017321号 京公网安备11010802016281号