【问题标题】:Create copy of Oracle database table to another Oracle database using SQL使用 SQL 将 Oracle 数据库表的副本创建到另一个 Oracle 数据库
【发布时间】:2016-06-01 21:20:49
【问题描述】:

我想知道是否有一种简单的方法可以将整个 Oracle 数据库表或数据行复制到另一个 Oracle 数据库表(不同的数据库)中。有没有某种方法可以使用 SQL 语言来做到这一点?我最初的想法是使用这样的 SQL 查询:

INSERT INTO outputTable
SELECT * FROM username/password@instance.inputTable

如果不使用 SQL,还有其他方法吗?我正在尝试自动执行此任务,因此不幸的是,使用 SQL Developer 或类似的方法执行复制是不够的。我正在尝试使用 Python 来做到这一点。

【问题讨论】:

标签: python sql oracle


【解决方案1】:

您可以创建一个DBLink 来连接源数据库和目标数据库,然后只需使用 SQL 将您的数据保存在链接的数据库中。

类似:

create database link "TARGET"
connect to YOUR_SCHEMA
identified by YOUR_PASSWORD
using YOUR_CONNECTION_STRING;

一旦你有了 DBLink,你就可以使用普通的 SQL,不管涉及的表在不同的 DB 上:

INSERT INTO YOUR_TABLE@TARGET SELECT * FROM YOUR_TABLE

【讨论】:

    【解决方案2】:

    尝试创建一个数据库链接:https://docs.oracle.com/cd/B19306_01/server.102/b14200/statements_5005.htm http://psoug.org/definition/create_database_link.htm

    您只需创建一次数据库链接,除非您需要连接的凭据随时更改。

    CREATE DATABASE LINK [Database Link Name] 
    CONNECT TO [Username] IDENTIFIED BY [Password]
    USING '[Service Name]';
    

    创建链接后,您可以执行以下操作以从单独的数据库中检索数据并使用它做任何您想做的事情:

    SELECT * FROM inputTable@[Database Link Name Here]
    

    在这种情况下:

    SELECT * INTO outputTable
    FROM inputTable@databaseLink
    

    【讨论】:

    • 有没有办法做到这一点,而无需创建数据库链接,只需添加@username/password@instance 而不是@databaseLink?
    • 据我所知,没有。这是给我的,作为几个月前 DBA 遇到的完全相同问题的解决方案。它对我的目的来说效果很好。
    【解决方案3】:

    尝试过 openQuery 吗?在sql server中,你可以链接到oracle数据库,然后你就可以在openquery时使用它

    例子

    Select * into T_NewTable from openquery(connectionanme, 'select * from your source table')
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-25
      • 2023-01-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多