annotate scripts/migrate-grp.sh @ 1006:4bc9494c00ff draft

Add clean-orphaned.sql migrate-grp.sh
author HIROSE Yuuji <yuuji@gentei.org>
date Sun, 05 Mar 2023 15:12:17 +0859
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1006
4bc9494c00ff Add clean-orphaned.sql migrate-grp.sh
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1 #!/bin/sh
4bc9494c00ff Add clean-orphaned.sql migrate-grp.sh
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2 # ./migrate-grp src-conf dst-conf GrpIDs
4bc9494c00ff Add clean-orphaned.sql migrate-grp.sh
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
3 # eg) ./sitemoving.rb s4-config.sh s4-world-second.sh 8
4bc9494c00ff Add clean-orphaned.sql migrate-grp.sh
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
4
4bc9494c00ff Add clean-orphaned.sql migrate-grp.sh
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
5 [ -f $1 ] && . ./$1
4bc9494c00ff Add clean-orphaned.sql migrate-grp.sh
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
6 [ -f $2 ] && . ./$2
4bc9494c00ff Add clean-orphaned.sql migrate-grp.sh
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
7 . `dirname $1`/s4-funcs.sh
4bc9494c00ff Add clean-orphaned.sql migrate-grp.sh
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
8
4bc9494c00ff Add clean-orphaned.sql migrate-grp.sh
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
9 dstdb=$DB
4bc9494c00ff Add clean-orphaned.sql migrate-grp.sh
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
10
4bc9494c00ff Add clean-orphaned.sql migrate-grp.sh
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
11 echo db=$db dstdb=$dstdb masterdb=$S4MASTERDB URL=$URL M_URL=$S4MASTERURL
4bc9494c00ff Add clean-orphaned.sql migrate-grp.sh
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
12
4bc9494c00ff Add clean-orphaned.sql migrate-grp.sh
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
13 shift 2
4bc9494c00ff Add clean-orphaned.sql migrate-grp.sh
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
14
4bc9494c00ff Add clean-orphaned.sql migrate-grp.sh
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
15 query "ATTACH DATABASE \"$S4MASTERDB\" AS src;" || abort "Cannot attach db #{dstdb}"
4bc9494c00ff Add clean-orphaned.sql migrate-grp.sh
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
16 for grid; do
4bc9494c00ff Add clean-orphaned.sql migrate-grp.sh
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
17 grid=$((0 + $grid))
4bc9494c00ff Add clean-orphaned.sql migrate-grp.sh
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
18 echo $grid
4bc9494c00ff Add clean-orphaned.sql migrate-grp.sh
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
19 gnamesql="(SELECT gname FROM src.grp WHERE rowid=$grid)"
4bc9494c00ff Add clean-orphaned.sql migrate-grp.sh
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
20 echo "Copying $grid..."
4bc9494c00ff Add clean-orphaned.sql migrate-grp.sh
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
21 query "BEGIN;"
4bc9494c00ff Add clean-orphaned.sql migrate-grp.sh
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
22 query "REPLACE INTO main.grp SELECT * FROM src.grp WHERE rowid=$grid;"
4bc9494c00ff Add clean-orphaned.sql migrate-grp.sh
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
23 for tbl in grp_s grp_m grp_mem grp_mem_s grp_mem_m \
4bc9494c00ff Add clean-orphaned.sql migrate-grp.sh
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
24 grp_adm grp_adm_s grp_adm_m; do
4bc9494c00ff Add clean-orphaned.sql migrate-grp.sh
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
25 query "REPLACE INTO main.$tbl SELECT * FROM src.$tbl
4bc9494c00ff Add clean-orphaned.sql migrate-grp.sh
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
26 WHERE gname=$gnamesql;"
4bc9494c00ff Add clean-orphaned.sql migrate-grp.sh
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
27 done
4bc9494c00ff Add clean-orphaned.sql migrate-grp.sh
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
28 blogs=`query "SELECT group_concat(\"'\"||id||\"'\", ',')
4bc9494c00ff Add clean-orphaned.sql migrate-grp.sh
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
29 FROM src.blog_s WHERE key='owner' AND val=$gnamesql;"`
4bc9494c00ff Add clean-orphaned.sql migrate-grp.sh
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
30 echo blogs=$blogs
4bc9494c00ff Add clean-orphaned.sql migrate-grp.sh
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
31 for tbl in blog blog_s blog_m; do
4bc9494c00ff Add clean-orphaned.sql migrate-grp.sh
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
32 query <<-EOF
4bc9494c00ff Add clean-orphaned.sql migrate-grp.sh
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
33 REPLACE INTO main.$tbl
4bc9494c00ff Add clean-orphaned.sql migrate-grp.sh
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
34 SELECT * FROM src.$tbl
4bc9494c00ff Add clean-orphaned.sql migrate-grp.sh
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
35 WHERE id IN ($blogs);
4bc9494c00ff Add clean-orphaned.sql migrate-grp.sh
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
36 EOF
4bc9494c00ff Add clean-orphaned.sql migrate-grp.sh
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
37 done
4bc9494c00ff Add clean-orphaned.sql migrate-grp.sh
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
38 for blogid in $blogs; do
4bc9494c00ff Add clean-orphaned.sql migrate-grp.sh
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
39 for tbl in article article_s article_m; do
4bc9494c00ff Add clean-orphaned.sql migrate-grp.sh
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
40 query <<-EOF
4bc9494c00ff Add clean-orphaned.sql migrate-grp.sh
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
41 REPLACE INTO main.$tbl
4bc9494c00ff Add clean-orphaned.sql migrate-grp.sh
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
42 SELECT * FROM src.$tbl
4bc9494c00ff Add clean-orphaned.sql migrate-grp.sh
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
43 WHERE id IN (SELECT id FROM src.article WHERE blogid IN ($blogs));
4bc9494c00ff Add clean-orphaned.sql migrate-grp.sh
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
44 EOF
4bc9494c00ff Add clean-orphaned.sql migrate-grp.sh
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
45 done
4bc9494c00ff Add clean-orphaned.sql migrate-grp.sh
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
46 done
4bc9494c00ff Add clean-orphaned.sql migrate-grp.sh
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
47 query "END;"
4bc9494c00ff Add clean-orphaned.sql migrate-grp.sh
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
48 done
4bc9494c00ff Add clean-orphaned.sql migrate-grp.sh
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
49 exit
4bc9494c00ff Add clean-orphaned.sql migrate-grp.sh
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
50 grid = g.to_i
4bc9494c00ff Add clean-orphaned.sql migrate-grp.sh
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
51 # Copy group itself
4bc9494c00ff Add clean-orphaned.sql migrate-grp.sh
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
52 gname = db.execute("SELECT gname FROM main.grp WHERE rowid=?", grid)[0][0]
4bc9494c00ff Add clean-orphaned.sql migrate-grp.sh
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
53 r = db.execute("SELECT gname FROM dst.grp WHERE gname=?", gname)
4bc9494c00ff Add clean-orphaned.sql migrate-grp.sh
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
54 if r[0] then
4bc9494c00ff Add clean-orphaned.sql migrate-grp.sh
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
55 STDERR.printf("Skipping existing group %s\n", r[0][0])
4bc9494c00ff Add clean-orphaned.sql migrate-grp.sh
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
56 ####### next
4bc9494c00ff Add clean-orphaned.sql migrate-grp.sh
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
57 end
4bc9494c00ff Add clean-orphaned.sql migrate-grp.sh
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
58 printf("Copying group %s...\n", gname)
4bc9494c00ff Add clean-orphaned.sql migrate-grp.sh
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
59 db.execute("BEGIN;");
4bc9494c00ff Add clean-orphaned.sql migrate-grp.sh
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
60 db.execute(
4bc9494c00ff Add clean-orphaned.sql migrate-grp.sh
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
61 'REPLACE INTO dst.grp SELECT * FROM main.grp WHERE rowid=?', grid)
4bc9494c00ff Add clean-orphaned.sql migrate-grp.sh
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
62 for tbl in %w(grp_s grp_m grp_mem grp_mem_s grp_mem_m
4bc9494c00ff Add clean-orphaned.sql migrate-grp.sh
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
63 grp_adm grp_adm_s grp_adm_m)
4bc9494c00ff Add clean-orphaned.sql migrate-grp.sh
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
64 db.execute(
4bc9494c00ff Add clean-orphaned.sql migrate-grp.sh
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
65 "REPLACE INTO dst.#{tbl}
4bc9494c00ff Add clean-orphaned.sql migrate-grp.sh
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
66 SELECT * FROM main.#{tbl} WHERE gname=?", gname)
4bc9494c00ff Add clean-orphaned.sql migrate-grp.sh
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
67 end
4bc9494c00ff Add clean-orphaned.sql migrate-grp.sh
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
68 ## Copy articles
4bc9494c00ff Add clean-orphaned.sql migrate-grp.sh
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
69 db.execute("SELECT id FROM blog_s WHERE key='owner' AND val=?",
4bc9494c00ff Add clean-orphaned.sql migrate-grp.sh
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
70 gname) do |row|
4bc9494c00ff Add clean-orphaned.sql migrate-grp.sh
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
71 blogid = row[0]
4bc9494c00ff Add clean-orphaned.sql migrate-grp.sh
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
72 for tbl in %w(blog blog_s blog_m)
4bc9494c00ff Add clean-orphaned.sql migrate-grp.sh
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
73 db.execute(
4bc9494c00ff Add clean-orphaned.sql migrate-grp.sh
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
74 "REPLACE INTO dst.#{tbl}
4bc9494c00ff Add clean-orphaned.sql migrate-grp.sh
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
75 SELECT * FROM main.#{tbl} WHERE id=?", blogid)
4bc9494c00ff Add clean-orphaned.sql migrate-grp.sh
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
76 db.execute(
4bc9494c00ff Add clean-orphaned.sql migrate-grp.sh
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
77 "SELECT id FROM article WHERE blogid=?", blogid) do |article|
4bc9494c00ff Add clean-orphaned.sql migrate-grp.sh
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
78 aid = article[0]
4bc9494c00ff Add clean-orphaned.sql migrate-grp.sh
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
79 for atbl in %W(article article_m)
4bc9494c00ff Add clean-orphaned.sql migrate-grp.sh
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
80 db.execute(
4bc9494c00ff Add clean-orphaned.sql migrate-grp.sh
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
81 "REPLACE INTO dst.#{atbl}
4bc9494c00ff Add clean-orphaned.sql migrate-grp.sh
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
82 SELECT * FROM main.#{atbl} WHERE id=?", aid)
4bc9494c00ff Add clean-orphaned.sql migrate-grp.sh
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
83 end
4bc9494c00ff Add clean-orphaned.sql migrate-grp.sh
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
84 db.execute(
4bc9494c00ff Add clean-orphaned.sql migrate-grp.sh
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
85 "SELECT id, type, key, val, bin FROM article_s WHERE id=?",
4bc9494c00ff Add clean-orphaned.sql migrate-grp.sh
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
86 aid) do |a|
4bc9494c00ff Add clean-orphaned.sql migrate-grp.sh
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
87 db.execute("REPLACE INTO dst.article_s VALUES(?, ?, ?, ?, ?)",
4bc9494c00ff Add clean-orphaned.sql migrate-grp.sh
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
88 a[0], a[1], a[2],
4bc9494c00ff Add clean-orphaned.sql migrate-grp.sh
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
89 a[3].gsub(srcurl, dsturl),
4bc9494c00ff Add clean-orphaned.sql migrate-grp.sh
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
90 a[4])
4bc9494c00ff Add clean-orphaned.sql migrate-grp.sh
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
91 end
4bc9494c00ff Add clean-orphaned.sql migrate-grp.sh
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
92 end
4bc9494c00ff Add clean-orphaned.sql migrate-grp.sh
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
93 end
4bc9494c00ff Add clean-orphaned.sql migrate-grp.sh
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
94 end
4bc9494c00ff Add clean-orphaned.sql migrate-grp.sh
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
95 db.execute("END;");
4bc9494c00ff Add clean-orphaned.sql migrate-grp.sh
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
96
4bc9494c00ff Add clean-orphaned.sql migrate-grp.sh
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
97 end
4bc9494c00ff Add clean-orphaned.sql migrate-grp.sh
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
98 puts("Done.")

yatex.org