On Tuesday, 10 Jul 2018  2:27 PM -0400, Randall Smith wrote:
<snip>

> My underlying question is "can text-comparing two DB dumps be used
> to determine what has changed?"

I don't know if it will meet your needs, but I've written a script for
my own purposes to compare DB changes.  Since it's fairly short, I
include it here.

--8<---------------cut here---------------start------------->8---
#!/bin/sh
# Compare two SQLite3 databases.
# If invoked under the name "tksql3diff", the diff is displayed graphically
# using tkdiff to display the differences.
#
# Last modified:  10-Jul-2018  Wm. Parsons

if [ $# -ne 2 ]
then
   echo "Usage: `basename $0` <filename1> <filename2>"
   exit
fi

if [ `basename $0` = "tksql3diff" ]
then
   diff=tkdiff
else
   diff=diff
fi

file1=$1
file2=$2

dump()
{
   file=$1

   # check that the file is readable
   if [ ! -r $file ]
   then
      echo "cannot read $file" >&2
      exit 1
   fi

   sql="select 'Application ID:'; pragma application_id;
        select 'User version:'; pragma user_version;"
   tables=`sqlite3 $file <<EOF
   select name from sqlite_master where type='table' order by name;
EOF
`
   for t in $tables
   do
      sql="$sql select '$t:'; select * from $t;"
   done

   echo "$sql" | sqlite3 $file > $file.dump
}

dump $file1
dump $file2

$diff $file1.dump $file2.dump

rm $file1.dump $file2.dump
--8<---------------cut here---------------end--------------->8---

Note:  This *probably* doesn't play well if you have BLOB fields in
your database.

-- 
Will

_______________________________________________
sqlite-users mailing list
sqlite-users@mailinglists.sqlite.org
http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to