转载;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
SQL> CREATE TABLE test_fb_table ( 2 ID int , 3 VAL VARCHAR2(10) 4 ); Table created. SQL> INSERT INTO test_fb_table VALUES (1, 'TEST' ); 1 row created. SQL> commit ; Commit complete. 假如 数据被错误的删除/更新 需要检索某个时间点上,表原有的数据。 SQL> SELECT TO_CHAR(sysdate, 'yyyy-mm-dd hh24:mi:ss' ) FROM dual; TO_CHAR(SYSDATE, 'YYYY-MM-DDHH24:MI:SS' -------------------------------------- 2010-11-07 13:01:37 这里删除掉数据。 SQL> delete from test_fb_table; 1 row deleted. SQL> commit ; Commit complete. 确认数据已经被删除。 SQL> select * from test_fb_table; no rows selected |
1
2
3
4
5
6
7
|
这里检索出,指定时间点上,指定表的数据情况。 SQL> select * from test_fb_table 2 AS OF TIMESTAMP TO_TIMESTAMP( '2010-11-07 13:01:37' , 3 'yyyy-mm-dd hh24:mi:ss' ); ID VAL ---------- -------------------- 1 TEST |
对于你来说, 也就是你需要先
CREATE TABLE 临时表 AS
select * from 你的那个数据被删除的表
AS OF TIMESTAMP TO_TIMESTAMP('2013-08-13 14:00:00', 'yyyy-mm-dd hh24:mi:ss');
这样, 就把当初那个时间点上的, 那个表的数据, 复制到一个 临时表 里面去了。
然后再
INSERT INTO 你的那个数据被删除的表 SELECT * FROM 临时表;
注: 你需要确定一下, 那个 数据被删除的表 上面, 有没有触发器什么的。
有的话, 可能需要暂时 禁用掉, 数据插入完了再恢复。