import os, sys, time, logging import glob, socket, subprocess from os.path import basename from pymonetdb.sql.connections import Connection as connect from pymonetdb.exceptions import Error as DBError import lsst_schema_queries as sch import lsst_queries as q ####################################### def main(): dbport = 53000 dbrelease = "Dec2016" dbversion = "SP5" dbname = "lsst_napels" node = socket.gethostname().split('.')[0] logfile = 'log/' + node + "_lsst_" + dbrelease + '_' + dbversion + "_" + time.strftime("%Y%m%d-%H%M%S") + ".log" logging.basicConfig(filename=logfile, filemode='w', format='%(message)s', level=logging.INFO) logging.info('Started') print "DB (%s) logging in file %s" % (dbname, logfile) csvdir = "/export/scratch2/bscheers/lsst/csvs" csvfiles = sorted(glob.glob(csvdir + '/S*_*.csv')) print "len(csvfiles) = %s" % (len(csvfiles)) p = subprocess.Popen(["./init_db.sh", dbname], stdout=subprocess.PIPE) output, err = p.communicate() print "O:",output if err is not None: print "E:",err hname = 'localhost' uname = 'monetdb' pword = 'monetdb' tstart = time.time() conn = connect(hostname=hname, port=dbport, username=uname, password=pword, database=dbname) fcnt = 0 scnt, fscnt, ocnt, ofocnt = 0, 0, 0, 0 for f in csvfiles: fcnt += 1 t0 = time.time() tabname = basename(f)[:-4].lower() print "====>\n#### Loading CSV file nr %s: %s ####" % (fcnt, basename(f)) if tabname.startswith("source_"): scnt += 1 sch.create_table(conn, basename(f), q=1) q.load_csv(conn, f, q=2) # executes queries 2 & 3 if scnt == 1: sch.create_merge_table(conn, basename(f), q=4) sch.alter_merge_table_add_pkey(conn, f, q=5) sch.alter_merge_table_add_table(conn, basename(f), q=6) elif tabname.startswith("forcedsource_"): fscnt += 1 sch.create_table(conn, basename(f), q=7) q.load_csv(conn, f, q=8) if fscnt == 1: sch.create_merge_table(conn, basename(f), q=10) sch.alter_merge_table_add_pkey(conn, f, q=11) sch.alter_merge_table_add_table(conn, basename(f), q=12) elif tabname.startswith("object_"): ocnt += 1 sch.create_table(conn, basename(f), q=13) q.load_csv(conn, f, q=14) if ocnt == 1: sch.create_merge_table(conn, basename(f), q=16) sch.alter_merge_table_add_pkey(conn, f, q=17) sch.alter_merge_table_add_table(conn, basename(f), q=18) elif tabname.startswith("objectfulloverlap_"): ofocnt += 1 sch.create_table(conn, basename(f), q=19) q.load_csv(conn, f, q=20) if ofocnt == 1: sch.create_merge_table(conn, basename(f), q=22) sch.alter_merge_table_add_pkey(conn, f, q=23) sch.alter_merge_table_add_table(conn, basename(f), q=24) else: sys.exit("No valid tabname: %s" % (tabname)) print "# L : Total copy-into time for this file: %s seconds" % (str(round(time.time() - t0, 3))) print "# L : Total processing time: %s seconds" % (str(round(time.time() - tstart, 3))) conn.close() print "# DB: Connection closed" print "\n#### Total elapsed time: %s seconds ####\n" % (str(round(time.time() - tstart, 3))) logging.info('Ended') print "Check log file: %s" % (logfile) if __name__ == '__main__': main()