读取一个 oracle 数据库写入另一个远程 oracle 数据库

Posted

技术标签:

【中文标题】读取一个 oracle 数据库写入另一个远程 oracle 数据库【英文标题】:reading one oracle database writing to another remote oracle database 【发布时间】:2010-02-19 04:56:54 【问题描述】:

c# 代码:我有 2 个远程 oracle 数据库,一个是远程的,我正在从本地 oracle 数据库中的表中选择值:查询返回 8 列:我想将数据写入具有不同列名的远程 oracle 表中,并且属性:我还想确保只插入新的行值:我的远程数据库的表结构与我的选择查询返回的列不同。

我从不同表查询中的 select 语句返回以下内容:列:customer_name、customer_id、customer_dep_number、mobile_number、payment_amount、vehicle_model、collection_point、transaction_date

远程表的结构如下: 表车辆购买

BUYER_ID NUMBER NOT NULL,

BUYER_NAME VARCHAR2(100 BYTE) NOT NULL,

BUYER_NAT_ID VARCHAR2(25 BYTE) DEFAULT 'N/A' NOT NULL,

BUYER_VEHICLE_DESCRIPTION VARCHAR2(2000 BYTE) NOT NULL,

BUYER_STATUS VARCHAR2(1 BYTE) 默认“U” 非空,

VEHICLE_AMOUNT NUMBER NOT NULL,

创建_BY NUMBER,

TRANS_CREATION_DATE 日期,

LAST_UPDATED_BY NUMBER,

LAST_UPDATE_DATE 日期,

RECEIPT_CREATED VARCHAR2(1 BYTE) 默认“N”,

MOBILE_NUM VARCHAR2(50 字节),

VEHICLE_COLLECTION_POINT VARCHAR2(100 BYTE),

RMA_FLAG VARCHAR2(1 BYTE) 默认“N”,

)

我要读取和插入的字段如下: customer_name = BUYER_NAME, customer_id = BUYER_ID

customer_dep_number = BUYER_NAT_ID

mobile_number = MOBILE_NUM

payment_amount = VEHICLE_AMOUNT

vehicle_model = BUYER_VEHICLE_DESCRIPTION

collection_point = VEHICLE_COLLECTION_POINT

transaction_date = TRANS_CREATION_DATE

非常紧急的语言c#拜托了:向帮助的人许诺的纪念品。

【问题讨论】:

贿赂!我认为在***上有一种标准的方法...... 不是贿赂,我的文化总是教导我们给予感谢:请协助 Sir.Kemp 【参考方案1】:

快速而肮脏的解决方案:

    在远程数据库(目标)中创建一个连接到本地数据库(源)的数据库链接

    从远程数据库跨数据库链接运行插入,即

    INSERT INTO desttable (customer_name,
                           customer_id,
                           customer_dep_number,
                           mobile_number, ...)
    SELECT s.buyer_name,
           s.buyer_id,
           s.buyer_nat_id,
           s.mobile_num,
           ...
    FROM   sourcetable@dblink s
    WHERE NOT EXISTS (
       SELECT null FROM desttable
       WHERE desttable.buyer_id = s.buyer_id
    );
    

替代方案:更好的解决方案可能使用 MERGE 代替

【讨论】:

以上是关于读取一个 oracle 数据库写入另一个远程 oracle 数据库的主要内容,如果未能解决你的问题,请参考以下文章

java实现从一个远程oracle数据库提取数据,之后写入本地的SQLserver数据库里。

oracle 表数据 怎么远程导到另一个机器的数据库里

oracle更新一行数据,另一个会话读取是为啥会产生2个CR块?

联合:从联合的一个数据成员中读取以写入另一个

cx_Oracle.NotSupportedError:无法将 Python 值转换为数据库值

java 读取当前java文件的数据并将其写入另一个文件