#!/usr/bin/python # This Python file uses the following encoding: utf-8 import sys from collections import OrderedDict #id,mounting_point_schedule_id,structure_element_id,main_structure_element_id,name,main_name def readBarcodes(filename): ret = OrderedDict() with open(filename, "r") as f: lines = f.read().split("\n") cols = lines[0].strip().split(',') assert cols[1].lower() == "mounting_point_schedule_id" assert cols[2].lower() == "structure_element_id" assert cols[3].lower() == "main_structure_element_id" assert cols[4].lower() == "name" assert cols[5].lower() == "main_name" rows = [line.strip() for line in lines[1:] if line.strip() != ""] for row in rows: items = row.split(",") ret[items[1], items[4], items[5]] = items[2] return ret def appendBarcodeUpdates(outputFile, barcodes): """Append an SQL INSERT statement for MPP.""" lines = [] for key in barcodes.keys(): mpp_id, name, main_name = key update = "INSERT INTO ism.ism_mounting_point_plan (mounting_point_schedule_id, structure_element_id) VALUES (%s, (select se.id from ism.ism_structure_element se, ism.ism_main_structure_element mse where se.name = '%s' AND mse.id = se.main_structure_element_id AND mse.name = '%s'));" % (mpp_id, name, main_name) lines.append(update) with open(outputFile, "w") as f: for line in lines: f.write(line + "\n") if __name__ == "__main__": barcodeFile = sys.argv[1] barcodes = readBarcodes(barcodeFile) sqlOutputFile = sys.argv[2] appendBarcodeUpdates(sqlOutputFile, barcodes)