diff --git a/scripts/merge_dbs.sge b/scripts/merge_dbs.sge index 2a24243..c8486e2 100755 --- a/scripts/merge_dbs.sge +++ b/scripts/merge_dbs.sge @@ -16,5 +16,4 @@ override_vars set -u -find $DBDIR -name "*.sqlite" -exec bash -c "sqlite3 {} .schema | sqlite3 $OUTDBPATH" \; -quit find $DBDIR -name "*.sqlite" -exec "$EXTENSIONCRAWLERDIR/scripts/merge_dbs.sh" "{}" "$OUTDBPATH" \; diff --git a/scripts/merge_dbs.sh b/scripts/merge_dbs.sh index cb2b918..3050554 100755 --- a/scripts/merge_dbs.sh +++ b/scripts/merge_dbs.sh @@ -7,11 +7,30 @@ if [ -z $FROM_DB ] || ! [ -f $FROM_DB ]; then exit 1 fi -if [ -z $TO_DB ] || ! [ -f $TO_DB ]; then - echo "destination db not provided or does not exist" +if [ -z $TO_DB ]; then + echo "destination db not provided" exit 1 fi +if ! [ -f $TO_DB ]; then + echo "Creating $TO_DB ..." + sqlite3 $FROM_DB .schema | grep -Eiv \ + -e "^CREATE TABLE IF NOT EXISTS (\"|')?[a-z]+_content(\"|')?\(" \ + -e "^CREATE TABLE IF NOT EXISTS (\"|')?[a-z]+_docsize(\"|')?\(" \ + -e "^CREATE TABLE IF NOT EXISTS (\"|')?[a-z]+_segments(\"|')?\(" \ + -e "^CREATE TABLE IF NOT EXISTS (\"|')?[a-z]+_stat(\"|')?\(" \ + -e "^CREATE TABLE IF NOT EXISTS (\"|')?[a-z]+_segdir(\"|')?\(" \ + | sqlite3 $TO_DB +fi + echo "Merging $FROM_DB into $TO_DB..." -sqlite3 $FROM_DB .dump | grep -v "^CREATE TABLE" | sqlite3 $TO_DB +sqlite3 $FROM_DB .dump | grep -Eiv \ + -e "^CREATE TABLE" \ + -e "^INSERT INTO (\"|')?sqlite_master(\"|')?" \ + -e "^INSERT INTO (\"|')?[a-z]+_segments(\"|')? " \ + -e "^INSERT INTO (\"|')?[a-z]+_segdir(\"|')? " \ + -e "^INSERT INTO (\"|')?[a-z]+_docsize(\"|')? " \ + -e "^INSERT INTO (\"|')?[a-z]+_stat(\"|')? " \ +| sed -r "s/^INSERT INTO ([a-z]+)_content VALUES\([[:digit:]]+,/INSERT INTO \1 VALUES(/I" \ +| sqlite3 $TO_DB