挖个坟,被雅琪姐顶楼的逻辑吸引过来的,这不就完全是用source替换target吗?
sql server我不懂,不过oracle不用merge语法而写存储过程的话思路如下:
1. 将target存在source不存在数据备份(create t_backup as select * from target where not exist(select 1 from source where target.id=source.id));
2. 清空target
3. 合并source+备份导入target
注意备份和rollback
我不是dba,方案好不好不清楚,这么做是因为oracle中update比较耗时
[/quote]
这样做的话会丢失一些列的值,不是所有都替换哈,比如上一次写入的时候会有个timestamp,如果删掉重来那时间咋办。
另外如果数据大的话这样时间是不是比较长?[/quote]
原来如此,我还是回去看你的八卦贴吧
挖个坟,被雅琪姐顶楼的逻辑吸引过来的,这不就完全是用source替换target吗?
sql server我不懂,不过oracle不用merge语法而写存储过程的话思路如下:
1. 将target存在source不存在数据备份(create t_backup as select * from target where not exist(select 1 from source where target.id=source.id));
2. 清空target
3. 合并source+备份导入target
注意备份和rollback
我不是dba,方案好不好不清楚,这么做是因为oracle中update比较耗时
[/quote]
这样做的话会丢失一些列的值,不是所有都替换哈,比如上一次写入的时候会有个timestamp,如果删掉重来那时间咋办。
另外如果数据大的话这样时间是不是比较长?
挖个坟,被雅琪姐顶楼的逻辑吸引过来的,这不就完全是用source替换target吗?
sql server我不懂,不过oracle不用merge语法而写存储过程的话思路如下:
1. 将target存在source不存在数据备份(create t_backup as select * from target where not exist(select 1 from source where target.id=source.id));
2. 清空target
3. 合并source+备份导入target
注意备份和rollback
我不是dba,方案好不好不清楚,这么做是因为oracle中update比较耗时