由于项目需要,我用sql server的DTS工具直接向Oracle导入了一些表格,导入成功了,从也PL Sql developer 里面可以看到新导入的那些表格以及里面的一行行数据,可是Oracle自己不识别这些表格,用SQL*Plus和PL Sql developer 都不能识别。就算前面加上用户名也仍然不识别。怪异的是用PL Sql developer 修改这些表格后就可以识别,但是重新开启PL Sql developer 后又恢复到以前没修改的状态并且又不可以识别。
    很急啊,请各位高手鼎力相助,在线等。

解决方案 »

  1.   

    什么叫不识别?是不是 select * from tablename 报错?你可以查询一下 select table_name from user_all_tables;
    然后看看表名是啥(有时倒进去的表名需要用 "" 引起来,我遇到过这样的情况)
      

  2.   


    谢谢兄台你!我说的不识别就是select语句报错说表不存在。加引号后还是不识别。补充一点,在企业管理器里面可以看到表格,但是看不到数据,意思就是说行数为0,诡异!
    请大家继续帮忙啊,谢谢!
      

  3.   

    select table_name from user_all_tables能看到表吗?
    你使用 pl/sql developer 打开一个窗口,然后将表名输入,右键点表名,然后选择 query data,看这样能不能查看数据。
      

  4.   

    我估计情况是这样的,在 sql server 数据库里,你的表名是大小写区分的(Tbl_Test),导入到 oracle 数据库里以后,从 user_all_tables 里看到的也是 Tbl_Test,所以查询时必须大小写区分,并且使用""引起来。你再试一下
      

  5.   

    SQL> select table_name from tabs where lower(table_name) like 'test';
     
    TABLE_NAME
    ------------------------------
    Test
     
    SQL> select * from test;
     
    select * from test
     
    ORA-00942: 表或视图不存在
     
    SQL> select * from Test;
     
    select * from Test
     
    ORA-00942: 表或视图不存在
     
    SQL> select * from "test";
     
    select * from "test"
     
    ORA-00942: 表或视图不存在
     
    SQL> select * from "Test";
     
            ID
    ----------
     
    SQL> 
      

  6.   


    兄弟的方法我试了遍,当用引号括起来再区别大小写的时候确实可以找的哦这个表,但是SQL*Plus一直运行个不停,暂停下发现也没查出记录,只是循环个不停而已。
    兄弟还有招没?
      

  7.   

    试一试 select count(*) from tablename,会不会是数据太多
    弄个 rownum 限制一下
      

  8.   

    Sql server 导入的表,后期使用比较麻烦,建议你还是重新创建这些表比较好create table tablename as select * from "TableName";
      

  9.   

    我还是重新建表吧,没办法,赶时间。
    特别感谢opps_zhou兄弟您!!谢谢~