我正在使用Oracle Data Integrator 11g,并在2个oracle 11g2数据库之间传输表。 转移后,我需要引用表名进行交易等。
以下是结果:
SQL> select tname from tab;
TNAME
------------------------------
ogrenci2
在这里,当我尝试"从ogrenci2"中选择*我得到"表或视图不存在"错误。 当我使用"选择*来自" ogrenci2""它显示了数据。我在ODI或Oracle数据库方面不是很有经验,但我在google和stack上的搜索没有做任何解决方案。顺便说一下,两个数据库都有相同的字符集。
答案 0 :(得分:0)
显然,ODI在新数据库中使用区分大小写的名称创建了表。默认情况下,大多数SQL数据库将对象名称转换为大写,因此例如此语句:
create table ogrenci2 (col1 number)
将创建一个大写名称为" OGRENCI2"的表格:
SQL> select table_name from user_tables
TABLE_NAME
----------------------------
OGRENCI2
但是,用引号提供表名,如下所示:
create table "ogrenci2" (col1 number)
将使用文字小写名称
创建表格SQL> select table_name from user_tables
TABLE_NAME
----------------------------
ogrenci2
随后,每次引用时都必须引用此表名,否则数据库会将其转换为大写,然后显然无法在目录中找到它。
我对ODI不太熟悉,但可能有一个强制大写对象名称的选项。