aboutsummaryrefslogtreecommitdiff
path: root/migrate_2_to_3.sh
diff options
context:
space:
mode:
Diffstat (limited to 'migrate_2_to_3.sh')
-rwxr-xr-xmigrate_2_to_3.sh26
1 files changed, 26 insertions, 0 deletions
diff --git a/migrate_2_to_3.sh b/migrate_2_to_3.sh
new file mode 100755
index 0000000..a56382b
--- /dev/null
+++ b/migrate_2_to_3.sh
@@ -0,0 +1,26 @@
+#!/usr/bin/env bash
+set -euo pipefail
+INDB=db.db
+OUTDB=db_migrated.db
+
+inversion="$(sqlite3 "$INDB" 'select version from Meta')"
+
+if [[ $inversion != "2" ]]; then
+ echo >&2 "$0 migrates from version 2 to version 3, but the database is at version $inversion."
+ exit 1
+fi
+
+if [[ -f "$OUTDB" ]]; then
+ echo >&2 "Output database $OUTDB already exists; remove before running this script"
+ exit 1
+fi
+
+sqlite3 "$OUTDB" <schema.sql
+
+sqlite3 "$INDB" '.dump' |
+ sed '/^INSERT INTO/!d' |
+ sqlite3 "$OUTDB"
+
+sqlite3 "$OUTDB" 'update Meta set version = 3'
+
+echo "Migrated '$INDB' to '$OUTDB'."