【问题标题】:SQL- Select data from different database's tableSQL-从不同数据库的表中选择数据
【发布时间】:2022-01-16 12:39:45
【问题描述】:

在 SQL Developer 中,我想执行一个查询,从不同数据库中的表中选择数据,例如:

SELECT * 
FROM db2.table;

我尝试了数据库链接和 GRANT SELECT ON db2.table TO current_Db;,但我仍然得到“表或视图不存在”.. 非常感谢任何帮助

【问题讨论】:

    标签: sql oracle oracle-sqldeveloper multiple-databases


    【解决方案1】:

    如果您以current_Db 连接,那么db2 是什么?

    • 你说它是一个“不同的数据库”——不知何故,我对此表示怀疑。我认为它实际上是“同一数据库中的不同用户”。如果是这样,那么你应该
      • 连接为db2
      • grant select on some_table to current_Db
      • 连接为current_Db
      • select * from db2.some_table
    • 如果它真的是一个不同的数据库,那么你应该
      • 连接为current_Db

      • 创建数据库链接:

          create database link dbl_db2 
          connect to db2 
          identified by its_password 
          using <connect string to db2 database>
        
      • select * from some_table@dbl_db2


    根据您的评论,它看起来毕竟是第一个选项 - 同一数据库中的两个用户。一步一步:

    SQL> show user
    USER is "SCOTT"
    SQL> create table test as
      2    select 'Littlefoot' name from dual;
    
    Table created.
    
    SQL> grant select on test to mike;
    
    Grant succeeded.
    
    SQL> connect mike/lion
    Connected.
    SQL> select * from scott.test;
    
    NAME
    ----------
    Littlefoot
    
    SQL>
    

    【讨论】:

    • 是的,谢谢我尝试了授权选择,但在执行 ``` select * from db2.some_table ``` 时仍然得到“表或视图不存在”
    • 请复制/粘贴您使用 SQL*Plus 所做的每一步。查看编辑的答案,我这样做的方式。
    • 我添加了一条带有 sqldeveloper 截图的评论,因为它不是完全相同的数据库不同用户
    • 不幸的是,截图根本没有帮助。正如我在之前的评论中所说:复制/粘贴 SQL*Plus 会话,准确地显示了您所做的以及 Oracle 的响应方式。
    猜你喜欢
    • 2012-09-24
    • 2019-02-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-09
    • 1970-01-01
    • 1970-01-01
    • 2014-08-06
    相关资源
    最近更新 更多