Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将备份作为UNIX批处理作业中oracle select语句的insert查询?_Oracle_Unix - Fatal编程技术网

如何将备份作为UNIX批处理作业中oracle select语句的insert查询?

如何将备份作为UNIX批处理作业中oracle select语句的insert查询?,oracle,unix,Oracle,Unix,我编写了一个UNIX批处理作业,它使用一些“where”条件更新表。在更新这些记录之前,我需要对随“where conditions”返回的记录进行备份(insert语句),并将其存储在“.dat”文件中。您能在这方面提供帮助吗?创建表备份最简单的方法是使用create table语句,该语句使用update语句的where条件。例如,让我们取一个样本更新语句: UPDATE sometable SET field1 = 'value' WHERE company = 'Oracle' 此更新

我编写了一个UNIX批处理作业,它使用一些“where”条件更新表。在更新这些记录之前,我需要对随“where conditions”返回的记录进行备份(insert语句),并将其存储在“.dat”文件中。您能在这方面提供帮助吗?

创建表备份最简单的方法是使用create table语句,该语句使用update语句的where条件。例如,让我们取一个样本更新语句:

UPDATE sometable
SET field1 = 'value'
WHERE company = 'Oracle'
此更新将更新公司名称为Oracle的每一行的
字段1
列。通过发出以下命令,可以创建
sometable
的备份:

CREATE TABLE sometable_backup AS (SELECT * FROM sometable WHERE company = 'Oracle');
这将创建一个名为
sometable\u backup
的表,该表将包含与更新的where子句匹配的所有行


然后可以使用数据泵或其他实用程序创建该特定表的export.dat文件。您可以使用该.dat文件导入其他数据库

这似乎是一种非常笨拙的备份方式。您建议如何使用
插入来回滚
更新
?如果您不信任批处理作业。您可以使用spool命令导出数据APC,在更新之前,我将使用与select查询相同的条件,并希望从ITAN获取insert脚本。您打算如何使用“insert”脚本?您已经说明了您“想要”做什么—您对某些业务问题的首选技术解决方案,但您没有说明为什么拒绝使用不同的方法。如果您只是想要一种将表恢复到“预更新”状态的方法,我只需要创建一个备份表-“创建mytable\u bkup as select*from mytable”,非常感谢您的回复。但我想知道是否有任何可能的方法通过UNIX批处理作业获取插入脚本???是的,您可以。但是,为什么需要将这些insert语句存储为.dat文件?这就是为什么有很多评论问你为什么要这样做。您可以很容易地使用SQL Developer之类的程序,使用查询中的提示生成插入(请参阅),也可以只运行select并将SQL Developer中的数据集导出为insert(请参阅),但是.dat文件部分令人困惑-通常插入脚本是.SQL文件。