dump database files to pickle format
diff --git a/Tools/scripts/db2pickle.py b/Tools/scripts/db2pickle.py
new file mode 100644
index 0000000..b445e93
--- /dev/null
+++ b/Tools/scripts/db2pickle.py
@@ -0,0 +1,116 @@
+#!/usr/bin/env python
+
+"""
+Synopsis: %(prog)s [-h|-b|-r] dbfile [ picklefile ]
+
+Convert the bsddb database file given on the command like to a pickle
+representation.  The optional flags indicate the type of the database (hash,
+btree, recno).  The default is hash.  If a pickle file is named it is opened
+for write access (deleting any existing data).  If no pickle file is named,
+the pickle output is written to standard output.
+
+"""
+
+import getopt
+try:
+    import bsddb
+except ImportError:
+    bsddb = None
+try:
+    import dbm
+except ImportError:
+    dbm = None
+try:
+    import anydbm
+except ImportError:
+    anydbm = None
+import sys
+try:
+    import cPickle as pickle
+except ImportError:
+    import pickle
+
+prog = sys.argv[0]
+
+def usage():
+   print >> sys.stderr, __doc__ % globals()
+
+def main(args):
+    try:
+        opts, args = getopt.getopt(args, "hbrda",
+                                   ["hash", "btree", "recno", "dbm", "anydbm"])
+    except getopt.error:
+        usage()
+        return 1
+
+    if len(args) == 0 or len(args) > 2:
+        usage()
+        return 1
+    elif len(args) == 1:
+        dbfile = args[0]
+        pfile = sys.stdout
+    else:
+        dbfile = args[0]
+        try:
+            pfile = file(args[1], 'wb')
+        except IOError:
+            print >> sys.stderr, "Unable to open", args[1]
+            return 1
+
+    dbopen = None
+    for opt, arg in opts:
+        if opt in ("-h", "--hash"):
+            try:
+                dbopen = bsddb.hashopen
+            except AttributeError:
+                print >> sys.stderr, "bsddb module unavailable."
+                return 1
+        elif opt in ("-b", "--btree"):
+            try:
+                dbopen = bsddb.btopen
+            except AttributeError:
+                print >> sys.stderr, "bsddb module unavailable."
+                return 1
+        elif opt in ("-r", "--recno"):
+            try:
+                dbopen = bsddb.rnopen
+            except AttributeError:
+                print >> sys.stderr, "bsddb module unavailable."
+                return 1
+        elif opt in ("-a", "--anydbm"):
+            try:
+                dbopen = anydbm.open
+            except AttributeError:
+                print >> sys.stderr, "anydbm module unavailable."
+                return 1
+        elif opt in ("-d", "--dbm"):
+            try:
+                dbopen = dbm.open
+            except AttributeError:
+                print >> sys.stderr, "dbm module unavailable."
+                return 1
+    if dbopen is None:
+        if bsddb is None:
+            print >> sys.stderr, "bsddb module unavailable -"
+            print >> sys.stderr, "must specify dbtype."
+            return 1
+        else:
+            dbopen = bsddb.hashopen
+
+    try:
+        db = dbopen(dbfile, 'r')
+    except bsddb.error:
+        print >> sys.stderr, "Unable to open", dbfile,
+        print >> sys.stderr, "Check for format or version mismatch."
+        return 1
+    
+    for k in db.keys():
+        pickle.dump((k, db[k]), pfile, 1==1)
+
+    db.close()
+    pfile.close()
+
+    return 0
+
+if __name__ == "__main__":
+    sys.exit(main(sys.argv[1:]))