读取一个 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更新一行数据,另一个会话读取是为啥会产生2个CR块?