Oracle SQL 开发人员为我们提供了导出数据的选项。但它只为我们提供了导出为一组 Insert 语句的选项。
我有两个带有镜像表的数据库。其中之一缺少一些列数据。我尝试从该表中截断数据,但它具有关联的外键,并且 SQL 不允许我删除它。
有没有办法以“更新表...”命令的形式从更大/更完整的表中导出数据?我先尝试谷歌搜索,失败了。我敢打赌有一个解决方案。
如果不出意外,我正在考虑制作一个小的python脚本,在导出后将插入命令集修改为更新命令集。
不使用内置命令,但是...
如果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)
归档时间: |
|
查看次数: |
11655 次 |
最近记录: |