-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathdelta.sh
95 lines (74 loc) · 2.37 KB
/
delta.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
#!/bin/sh
PROD_URL=$1
DEV_URL=$2
USERNAME=$3
PASSWORD=$4
DIFFTYPES=$5
SCHEMAS=$6
if [ "$PROD_URL" == "" -o "$DEV_URL" == "" -o "$USERNAME" == "" -o "$PASSWORD" == "" ]; then
echo "usage: full.sh prod_url dev_url username password [difftypes]" >&2
exit 1
fi
CLASSPATH=$HOME/.m2/repository/com/microsoft/sqlserver/sqljdbc4/4.2-6225/sqljdbc4-4.2-6225.jar
DRIVER=com.microsoft.sqlserver.jdbc.SQLServerDriver
if [ "$DIFFTYPES" == "" ]; then
DIFFTYPES="tables,columns,indexes,foreignkeys,primarykeys"
# these also are valid (though not every combination is)
#DIFFTYPES="tables,columns,indexes,foreignkeys,primarykeys,uniqueconstraints"
#DIFFTYPES="tables,views,columns,indexes,foreignkeys,primarykeys"
#DIFFTYPES="tables,views,columns,indexes,foreignkeys,primarykeys,uniqueconstraints"
#DIFFTYPES="tables"
#DIFFTYPES="views"
fi
if [ "$SCHEMAS" == "" ]; then
SCHEMAS=`cat schema.txt`
fi
TMPFILE=/tmp/db.changelog.$$.xml
for SCHEMA in $SCHEMAS
do
echo "" >&2
echo "schema: $SCHEMA" >&2
echo "" >&2
echo "--"
echo "--"
echo "--"
echo "-- schema: $SCHEMA"
echo "--"
echo "--"
echo "--"
echo "" >&2
echo "running diffChangeLog to determine differences between prod and dev ..." >&2
echo "(diffTypes = $DIFFTYPES) ..." >&2
liquibase --classpath=$CLASSPATH \
--driver=$DRIVER \
--url=$PROD_URL \
--username=$USERNAME \
--password=$PASSWORD \
--diffTypes=$DIFFTYPES \
diffChangeLog \
--referenceUrl=$DEV_URL \
--referenceUsername=$USERNAME \
--referencePassword=$PASSWORD \
--schemas=$SCHEMA \
--referenceSchemas=$SCHEMA \
--includeSchema=true \
> $TMPFILE
echo "" >&2
echo "converting changelog to SQL ..." >&2
liquibase --classpath=$CLASSPATH \
--driver=$DRIVER \
--url=$DEV_URL \
--username=$USERNAME \
--password=$PASSWORD \
--changeLogFile=$TMPFILE \
updateSql \
| grep -v "^INSERT INTO" \
| grep -v "DATABASECHANGELOGLOCK" \
| grep -v "DATABASECHANGELOG" \
| grep -v "Database Lock Table" \
| grep -v "Database Change Log Table" \
| grep -v "^-- Changeset" \
| grep -v "^USE \["
echo "" >&2
done
rm $TMPFILE