2009-08-20 3 views
0

500,000 행의 SQL 스크립트가 있습니다.Begin ... 50 행마다 커밋하십시오.

update users set region_id = 9814746 where id = 101 and region_id is null; 
update users set region_id = 9814731 where id = 102 and region_id is null; 
update users set region_id = 3470676 where id = 103 and region_id is null; 
... 
.... 

나는 50 줄마다 시작하는 스크립트를 생성 할 수 있어야합니다. 어떻게해야합니까? 저는 이것을 pg-admin에서 실행할 것입니다.

감사합니다, Sharadov

+0

당신이 프로그래밍 언어의 종류를 사용할 수 있습니까? – reto

답변

4

이 좋은 시작이 될 수 있습니다
cat sql.file | perl -e 'i=0;print "begin;\n"; while(<>){print;i++;if(i % 50 == 0){print "end;\nbegin;\n";}}print "end\n";' > outputsql.file

+0

나는 perl 기술이 전혀 없다. – sharadov

+0

당신은 펄 기술이 필요하지 않습니다. chotchki가 제공 한 코드를 사용하십시오. –

2

간단한 AWK 솔루션 :

cat your_sql_file | awk ' 
    BEGIN{print "BEGIN;"} 
    {print} 
    (0 == NR%50) {print "COMMIT;\nBEGIN;"} 
    END{print "COMMIT;"}' 
+0

매력처럼 일했습니다! 이제 쉘의 힘을 이해하십시오. – sharadov

+0

매력처럼 일했습니다! 쉘의 힘을 이해하는 방법. sed awk grep cut cat tac nl의 PROGRAM에 대한 – sharadov

+1

; 남자 $ PROGRAM; 끝난; 진실한 동안; 할 play_with_it; 끝난 –

관련 문제