原排序代码:
select id ,rn from(
select id ,rownum rn from temp_org order by id )
where rn >10000 and rn <15000
由于原库是生成库,所以为了安全起见,我新建了一张临时表 :create table temp_org as select * from org,这个建表语句最大的好处就是可以非常简单的把数据从源表移动到新的临时表,但是却不能把主键,索引之类的带过来,只是一个简单的数据表。
order by和rownum同时使用时,只有id是primary key才会先执行order by,不然会优先给rownum赋值,所以以上语句查出来的结果会看到id是正序的,但是rownum乱序。
正确语句:
select * from
(select ORG_ID ,rownum rn from (
SELECT
ORG_ID
FROM TEMP_ORG order by org_id )order by rn )
where rn > 100000 and rn < 150000
虽然是乱序,但是就我目前使用来看,好像问题不是非常大。由于安全,本次导数据只能先导出数据文件(SQL文件,CSV文件),然后再导入开发库,但是由于网络原因或者这个排序的原因(未确定原因,但是个人感觉网络丢包的可能性比较大),导致部分数据丢失。
向着更好的方向前进,希望本文帮到需要的人。