MERGE记录的Oracle导出和导入?

时间:2017-12-11 20:06:08

标签: oracle

我有一个存在于两个数据库中的表X.一个DB是源,另一个是目标。

是否有一种简单的方法可以导出表X,然后运行导入,将MERGE记录放入表中而不覆盖(删除)记录?

例如:

源表有记录(第一列是PK)

1 | ABC
2 | DEF
3 | GHI

目标表:

1 | DSF
3 | GHI
4 | TPZ

运行完毕后,我期待着这个:

1 | ABC
2 | DEF
3 | GHI
4 | TPZ

我认为我读到的一个解决方案是导出并导入到临时表中,然后编写一个脚本来合并导入数据库中的行。在我尝试这条路线之前,我想知道Oracle中是否还有其他选项。

1 个答案:

答案 0 :(得分:1)

根据您拥有的行数,可以使用Data Pump导出目标表的内容,然后将该转储文件导入源表。它不是最有效的方法,但如果您使用少量行,它可能是最直接的方法。初始导出类似于:

expdp [USER]/[PASS]@[DATABASE] schemas=[SCHEMA] tables=[TARGET] directory=[DIRECTORY] dumpfile=[FILE].dmp logfile=[LOG].log

使用相同的转储文件,您可以像这样导入它:

impdp [USER]/[PASS]@[DATABASE] schemas=[SCHEMA] tables=[TARGET] DIRECTORYtables=[TARGET] directory=[DIRECTORY] dumpfile=[FILE].dmp TABLE_EXISTS_ACTION=APPEND logfile=[LOG].log 

使用APPEND标志应允许您加载Source表中尚未包含的所有行。