2
2
trap "rm -f /tmp/$$" 0 1 2 3 15
3
3
4
4
if [ "$#" -eq 0 ]
5
- then echo "Usage: $0 [-f inputfile] old_data_dir database " 1>&2
5
+ then echo "Usage: $0 [-f inputfile] old_data_dir" 1>&2
6
6
exit 1
7
7
fi
8
8
@@ -16,13 +16,12 @@ then INPUT="$2"
16
16
else INPUT=""
17
17
fi
18
18
19
- if [ "$#" -ne 2 ]
20
- then echo "Usage: $0 [-f input_file ] old_data_dir database " 1>&2
19
+ if [ "$#" -ne 1 ]
20
+ then echo "Usage: $0 [-f inputfile ] old_data_dir" 1>&2
21
21
exit 1
22
22
fi
23
23
24
24
OLDDIR="$1"
25
- DATABASE="$2"
26
25
27
26
# check things
28
27
@@ -36,8 +35,8 @@ then echo "You must rename your old /data directory to /$OLDDIR and run initdb."
36
35
exit 1
37
36
fi
38
37
39
- if [ ! -d "./$OLDDIR/data/ base/$DATABASE " ]
40
- then echo "There is not database $DATABASE in ./$OLDDIR/data /base." 1>&2
38
+ if [ ! -d "./$OLDDIR/base/template1 " ]
39
+ then echo "There is not database template1 in ./$OLDDIR/base." 1>&2
41
40
exit 1
42
41
fi
43
42
53
52
54
53
# do I need to create a database?
55
54
56
- if [ "$DATABASE" != "template1" ]
57
- then echo "Dropping and recreating database $DATABASE." 1>&2
58
- destroydb "$DATABASE" >/dev/null 2>&1
59
- createdb "$DATABASE"
60
- fi
61
-
62
- # remove any COPY statements, preserve pgdump_oid setting from pg_dumpall
55
+ # remove any COPY statements
56
+ # we don't even need pgdump_oid because we are moving pg_variable
57
+ # then shouldn't be in there anyway
63
58
64
59
cat $INPUT | awk ' {
65
- if (toupper($0) ~ /^COPY / &&
66
- toupper($0) !~ /^COPY[ ]*PGDUMP_OID/ )
60
+ if (toupper($0) ~ /^COPY /)
67
61
while (getline $0 > 0 && $0 != "\\.")
68
62
;
69
63
else print $0;
70
64
}' >/tmp/$$
71
65
72
66
#create empty tables/indexes
73
67
74
- psql "$DATABASE" <"/tmp/$$"
75
- set -x
68
+ psql "template1" <"/tmp/$$"
76
69
77
70
for DIR in data/base/*
78
71
do
79
72
BASEDIR="`basename $DIR`"
80
73
if [ -d "$DIR" -a \
81
- -d "$OLDDIR/$DIR" -a \
82
- \( "$DATABASE" = "$BASEDIR" -o "$DATABASE" = "template1" \) ]
83
- then for FILE in $OLDDIR/$DIR/*
74
+ -d "$OLDDIR/base/$BASEDIR" -a \( "$BASEDIR" != "template1" \) ]
75
+ then for FILE in $OLDDIR/base/$BASEDIR/*
84
76
do
85
77
BASEFILE="`basename $FILE`"
86
78
if [ `expr "$BASEFILE" : "pg_"` -ne 3 -a \
91
83
fi
92
84
done
93
85
86
+ mv $OLDDIR/pg_log data
87
+ mv $OLDDIR/pg_variable data
88
+
94
89
echo "You may removed the $OLDDIR directory with 'rm -r $OLDDIR'."
0 commit comments