pldb (list): Add `-w' option to show a window around the group position(s).
[dvddb] / upgrade-v3
CommitLineData
14acb11f
MW
1#! /usr/bin/perl -w
2
3use open ":utf8";
4use strict;
5
6use DBI;
7
8BEGIN { binmode STDOUT, ":utf8"; }
9
10my $DB = DBI->connect("dbi:Pg:host=roadstar", "", "",
11 { AutoCommit => 0, RaiseError => 1 });
12
b2a25885
MW
13my $st_outer = $DB->prepare
14 ("SELECT title, COUNT(*) FROM old_dvd GROUP BY title");
15my $st_inner = $DB->prepare
16 ("SELECT disc, path, discid FROM old_dvd WHERE title = ?");
17my $st_add_set = $DB->prepare
18 ("INSERT INTO dvd_set (name, ndisc) VALUES (?, ?) RETURNING id");
19my $st_add_disc = $DB->prepare
20 ("INSERT INTO dvd_disc (set_id, disc, path, disc_id) VALUES (?, ?, ?, ?)");
14acb11f
MW
21$st_outer->execute;
22
23OUTER: for (;;) {
24 my @r = $st_outer->fetchrow_array; last OUTER unless @r;
25 my ($title, $ndisc) = @r;
26
27 $st_add_set->execute($title, $ndisc);
28 my ($set_id) = $st_add_set->fetchrow_array;
29
30 $st_inner->execute($title);
31 INNER: for (;;) {
32 my @r = $st_inner->fetchrow_array; last INNER unless @r;
33 my ($disc, $path, $disc_id) = @r;
34 $st_add_disc->execute($set_id, $disc, $path, $disc_id);
35 }
36}
37$DB->commit; $DB->disconnect;