Начните ... фиксировать каждые 50 строк - PullRequest
0 голосов
/ 20 августа 2009

У меня есть сценарий sql 500 000 строк.

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;
...
....

Мне нужно иметь возможность сгенерировать скрипт с помощью команды begin ... commit каждые 50 строк. Как мне это сделать? Я буду запускать это в pg-admin.

Спасибо, Sharadov

Ответы [ 2 ]

5 голосов
/ 20 августа 2009

Это может быть хорошим началом:
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

3 голосов
/ 20 августа 2009

Простое решение awk:

cat your_sql_file | awk '
    BEGIN{print "BEGIN;"}
    {print}
    (0 == NR%50) {print "COMMIT;\nBEGIN;"}
    END{print "COMMIT;"}'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...