2009-08-20 14 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

あなたはperlのスキルは必要ありません。 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

; man $ PROGRAMを実行します。完了しました。真実です。それでは。完了 –

関連する問題