data 반으로 나줘서 txt추출하기 0 6 1,015

by Daff [SQL Query] [2019.12.11 15:07:29]


현재 뷰테이블의 값을 txt로 추출하고 있습니다 

스크립트도 있고 배치도 있긴한데

만약 300건이라면 기존에는 하나의 1.txt 파일로 추출했는데

이제는 0 ~ 150까지 1.txt로  151~마지막레코드까지를 2.txt로 반정도로 나눠서, 쪼개서, 추출하려면 조건절을 어떻게 해야하나요

 

rownum을 이용해서 해보려니 잘 안되네요;   두번째 값이 0 이 나오는;;;;; 왜 0 이 나오는거죠..?

select count(*) from Viewtable
where rownum <= 1500000 ;

select count(*) from Viewtable
where rownum >= 1500001;

by Daff [2019.12.11 15:36:15]

select max(rownum) from Viewtable ; -- 3011003

select count(*) from Viewtable ; -- 3011003

파일 하나,

select count(*) from (select rownum rnum, id from Viewtable order by id desc)
where rnum between 1 and 1500000 ;
-- 1500000

파일 둘,

select count(*) from (select rownum rnum, id from Viewtable order by id desc)
where rnum between 1500001 and (select max(rownum) from Viewtable) ;
-- 1511003


이렇게 하면 될까요?


by 마농 [2019.12.11 16:34:40]

정렬기준에 맞게 정렬하여 번호 부여하고, 부여된 번호로 범위 조건 주시면 됩니다.
굳이 MAX(ROWNUM) 할 필요 없습니다. 그냥 큰 숫자로 조건 주세요. (예, 3000000, 9999999)
아예 Between 이 아닌 크다/작다 조건 주는게 더 깔끔하겠네요.


by jkson [2019.12.11 16:57:05]

첫번째 쿼리 수행중 data insert/update/delete가 일어나면 첫번째 파일 두번째 파일 데이터가 중복되거나 누락될 가능성이 있어요.

차라리 한번에 추출하시고 txt를 나누는 게 나을듯 한데 굳이 추출 때부터 둘로 나누시려는 이유가..?


by Daff [2019.12.11 17:21:53]

앗, 네, 이게 실시간db는 아니고, data가공 후 납품?하는 전체 프로세스 중에 한부분이라, 중간에 manual로 나누고 할수가 없어서요, 

그리고 이 앞단계에서 스크립트 쿼리가 필요한 모든과정이 끝나고, 이단계에서는 txt로 빼낸다음 window상에서 후작업이 들어가는 터라, 수행중 data change가 일어나진 않을거에요^^


by Daff [2019.12.11 17:02:09]

select max(rownum) from Viewtable ; -- 3011003

select count(*) from Viewtable; -- 3011003

select count(*) from (select rownum rnum, id from Viewtable order by id desc)
where rnum <= 1500000 ;
-- 1500000

select count(*) from (select rownum rnum, id from Viewtable order by id desc)
where rnum >= 1500001 and rnum <= 9999999 ;
-- 1511003

이렇게요?

추가질문1)  order by 꼭 해야하나요, 저것도 구글링한거라,  안하면 rownum 특성상 문제가 된다거나그런건지..

추가질문2) 매달? 쓸 쿼리라서, 게다가 데이터의 분실이 한건이라도 있으면 안되서 조심스럽습니다, 혹시 문제가 있는 부분이 있을까요


by 마농 [2019.12.11 17:12:24]

0. 9999999 조건은 빼도 무방하죠.
1. 정렬 기준이 있다면? 당연히 정렬 해야지요.
2. 정렬 기준이 유일키라면? 누락 문제 없습니다. 중복키라면? 문제의 소지가 있을 수 있죠.

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입