Oracle SQL 开发人员能否将数据导出为一组更新命令?

Nit*_*tin 5 oracle export

Oracle SQL 开发人员为我们提供了导出数据的选项。但它只为我们提供了导出为一组 Insert 语句的选项。

我有两个带有镜像表的数据库。其中之一缺少一些列数据。我尝试从该表中截断数据,但它具有关联的外键,并且 SQL 不允许我删除它。

有没有办法以“更新表...”命令的形式从更大/更完整的表中导出数据?我先尝试谷歌搜索,失败了。我敢打赌有一个解决方案。

如果不出意外,我正在考虑制作一个小的python脚本,在导出后将插入命令集修改为更新命令集。

Lei*_*fel 2

不使用内置命令,但是...

如果UPDATE确实可以满足您的要求,如您的标题所示,那么不需要插入,并且主键必须在数据库之间同步。

您的要求不允许远程更新,但如果您可以远程查询数据库,那么您可以将本地表连接到远程表以创建远程系统运行所需的语句。这是一个演示:

drop table t1;
drop table t2;
create table t1 as (select level c1, level c2 from dual connect by level <=7);
create table t2 as (select * from t1);
update t2 set c2 = null where c1 in (3,6);
select * from t1;
select * from t2;

select 'UPDATE t2 SET c2 = ' || t1.c2 || ' WHERE c1=' || t1.c1 || ';' sql from t1 
join t2 on t1.c1 = t2.c1
where t1.c2 <> t2.c2 OR t2.c2 is null;
Run Code Online (Sandbox Code Playgroud)

如果无法查询远程数据库,可以像这样更新每一行:

drop table t1;
create table t1 as (select level c1, level c2 from dual connect by level <=7);

select 'UPDATE t2 SET c2 = ' || t1.c2 || ' WHERE c1=' || t1.c1 || ';' sql from t1;
Run Code Online (Sandbox Code Playgroud)