400gb sql파일 원하는 테이블 insert문만 추출하는법
데이터 덤프를 sql파일 형식으로 추출한걸 받았습니다.
db는 oracle이고 용량은 400gb입니다.
sqlplus를 통해 sql파일을 실행시켰는데, 4일넘게 임포트해도 다 안되길래 취소시키고
대용량파일 열 수 있는 에디터를 통해 봤더니 라인 수가 10억줄이더라구요;;
파일에 있는 데이터가 다 필요한게 아니라
특정 테이블 4개정도만 필요한거라...
특정 테이블에 해당하는 insert문만 필요해서 추출할 방법을 찾고 있습니다.
(해당 db를 이전에 덤프떠놓은게 있어서(~22년데이터까지)
db를 구현해놓은 상태이고
sql파일은 최근에 다시 추출한거라서(~23년데이터) 22년~23년 데이터만 db에 넣고싶은거라서
해당 기간의 insert문을 추출하고 싶은겁니다!!)
혹시 비슷한 경험 있으신 분들은 어떻게 하셨는지 조언 좀 얻고 싶습니다.
1.
윈도우에서 파워셀 명령어로 파일을 분할할 수 있습니다.
https://change-words.tistory.com/entry/windows-textfile-separation
400GB 용량이면 1000개로 만들면 400MB 파일 1000개가 생성되겠네요.
2.
1000개 파일 있는 경로에서
findstr /C:"insert into 테이블명" 으로 검색하면 해당 테이블에 인서트하는 구문이 있는 파일이 검색됩니다.
3.
용량이 400MB 이기 때문에 위에서 검색된 파일 일반 텍스트 에디터기로 열어서
검색하여 insert 구문을 복제 실행
아니면 findstr 검색 옵션에 정규식이 있습니다.
그것으로 해당 insert 구문만 추출하는 것은 파일이 나눠져 있기 때문에 메모리 초과는 뜨지 않고
전체 파일 찾으면 30분이면 insert 쿼리만 추출되지 않을까 합니다.