2009-08-20 62 views
0

我有一個500,000行的sql腳本。開始......每隔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 2009-08-20 17:40:09

回答

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 2009-08-20 18:01:56

+0

你不需要perl技能。只需使用chotchki提供的代碼即可。 – 2009-08-20 18:02:39

2

簡單awk的解決方案:

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

工作就像一個魅力!現在瞭解殼的力量。 – sharadov 2009-08-20 18:38:12

+0

工作就像一個魅力!如何理解shell的威力。 – sharadov 2009-08-20 18:39:01

+1

for PROGRAM in sed awk grep cut cat tac nl;做人$節目;完成;而真實的;做play_with_it; DONE – 2009-08-20 18:44:38

相關問題