00001 #!/usr/local/bin/python 00002 # 00003 # Copyright 2004 00004 # by 00005 # The Board of Trustees of the 00006 # Leland Stanford Junior University. 00007 # All rights reserved. 00008 # 00009 00010 __facility__ = "Online" 00011 __abstract__ = "Housekeeping Database Synch Out" 00012 __author__ = "J. Panetta <panetta@SLAC.Stanford.edu> SLAC - GLAST LAT I&T/Online" 00013 __date__ = "11/20/2004" 00014 __version__ = "$Revision: 1.1 $" 00015 __credits__ = "SLAC" 00016 00017 00018 import LATTE.copyright_SLAC 00019 00020 import os, sys, struct, gzip, time 00021 from LATTE.client.gOptions import Options 00022 import MySQLdb 00023 00024 tlmFieldsList = "MNEMID, MNEM, DESTTYPE, EUCONV, DESCRIP, OPSYMBOL, SUBS, EUSTRING, EVENTFLAG, ARYLENGTH, LIMITS, INIT, NOTASSIGNABLE" 00025 valFieldsList = "USECS, VALUE, MNEMID, SOURCE" 00026 srcFieldsList = "SOURCE, DESCRIP" 00027 00028 valInsert = "insert ignore into valfields (%s) values " % valFieldsList 00029 00030 valPackFmt = "!ddLH" 00031 chunkSize = 5000 00032 00033 def dumpVALfields(inFile, db): 00034 00035 fmtSize = struct.calcsize(valPackFmt) 00036 n = 0 00037 cursor = db.cursor() 00038 while True: 00039 if n%50 == 0: 00040 print "Optimizing VALFIELDS..." 00041 cursor.execute("optimize table valfields") 00042 00043 valList = "" 00044 set = inFile.read((fmtSize)*chunkSize) 00045 nChunks = len(set) / fmtSize 00046 if len(set) == 0: break 00047 for i in range(nChunks): 00048 startPoint = i*(fmtSize) 00049 datum = struct.unpack(valPackFmt, set[startPoint:startPoint+fmtSize]) 00050 valList += "(%s, %s, %s, %s), " % datum 00051 00052 cursor.execute( valInsert + valList[:len(valList)-2] ) 00053 db.commit() 00054 n += 1 00055 print n*chunkSize, time.time() 00056 00057 00058 if __name__ == '__main__': 00059 00060 # Options, first list mandatory, second list optional 00061 options = Options([], 00062 []) 00063 try: 00064 options.parse() 00065 except Exception, msg: 00066 # options.usage(usage()) 00067 raise Exception, msg 00068 00069 sqlDb = MySQLdb.connect(db='FOODB', user='itosdb', host='localhost') 00070 # cursor = None 00071 00072 valIn = gzip.open('val.out.gz') 00073 dumpVALfields(valIn, sqlDb) 00074 valIn.close() 00075 00076 00077 00078