开始...每50行提交一次

时间:2009-08-20 17:36:53

标签: postgresql

我有一个500,000行的sql脚本。

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

2 个答案:

答案 0 :(得分:5)

这可能是一个好的开始:
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

答案 1 :(得分:3)

简单的awk解决方案:

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