src/hg/makeDb/trackDb/makeMetaDb 1.1

1.1 2010/06/02 21:59:14 braney
make the metaDb table
Index: src/hg/makeDb/trackDb/makeMetaDb
===================================================================
RCS file: src/hg/makeDb/trackDb/makeMetaDb
diff -N src/hg/makeDb/trackDb/makeMetaDb
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ src/hg/makeDb/trackDb/makeMetaDb	2 Jun 2010 21:59:14 -0000	1.1
@@ -0,0 +1,64 @@
+#!/bin/bash -e
+usage='makeMetaDb  directory metaDb db0 ...'
+
+UNAME_N=`uname -n`
+UNAME_N=${UNAME_N/.cse.ucsc.edu/}
+
+if [ $# -lt 3 ] ; then
+    echo "wrong # args: $usage" >&2
+    exit 1
+fi
+
+directory="$1"; shift
+metaDb="$1"; shift
+dbs="$@"
+
+# check if a database exists, print note and return non-zero if it doesn't
+dbExists() {
+    local db="$1"
+    if [ -n "$local" ] ; then
+	local dbChk=$(hgsqlLocal -Ne 'show databases like "'$db'"')
+    else 
+	local dbChk=$(hgsql -Ne 'show databases like "'$db'"')
+    fi
+    if [ -z "$dbChk" ] ; then
+        echo "Note: database $db does not exist, skipping"
+        return 1
+    else
+        return 0
+    fi
+}
+
+# load metaDb for a database
+loadMetaDb() {
+    local db="$1"
+    local dbpath=$(ls -1 -d */$db)
+    local org=$(echo $dbpath | sed -e 's/\/.*//')
+    local metaDir=$dbpath/metaDb/$directory
+    local tmpTable=$metaDb"_tmp";
+    local bakTable=$metaDb"_back";
+
+    local cmd="hgsql -e \"drop table if exists $tmpTable;\" $db"
+    echo $cmd
+    eval $cmd 
+
+    local cmd="cat $metaDir/*.ra > $metaDir/allRas; mdbUpdate -recreate $db -table=$tmpTable $metaDir/allRas"
+    echo $cmd
+    eval $cmd 
+
+    local cmd="rm $metaDir/allRas"
+    echo $cmd
+    eval $cmd 
+
+    local cmd="hgsqlSwapTables -okNoTable2 -dropTable3 $db $tmpTable $metaDb $bakTable"
+    echo $cmd
+    eval $cmd 
+}
+
+# load for all specified databases
+for db in $dbs ; do
+    if dbExists $db ; then
+        loadMetaDb $db
+    fi
+done
+