49 lines
1.4 KiB
Python
Executable File
49 lines
1.4 KiB
Python
Executable File
#!/usr/bin/python
|
|
# This Python file uses the following encoding: utf-8
|
|
|
|
import sys
|
|
from collections import OrderedDict
|
|
|
|
#asset_id,asset_barcode,structure_element_id,se_barcode,main_structure_element_id,name
|
|
|
|
|
|
def readBarcodes(filename):
|
|
"""Create a dictionary { name, MSE-name : barcode }."""
|
|
ret = OrderedDict()
|
|
|
|
with open(filename, "r") as f:
|
|
lines = f.read().split("\n")
|
|
cols = lines[0].strip().split(',')
|
|
|
|
#assert cols[0].lower() == "asset_id"
|
|
assert cols[1].lower() == "asset_barcode"
|
|
assert cols[3].lower() == "se_barcode"
|
|
|
|
rows = [line.strip() for line in lines[1:] if line.strip() != ""]
|
|
for row in rows:
|
|
items = row.split(",")
|
|
ret[items[1]] = items[3]
|
|
|
|
return ret
|
|
|
|
|
|
def appendBarcodeUpdates(outputFile, barcodes):
|
|
"""Append an SQL INSERT statement for barcodes."""
|
|
lines = []
|
|
for key in barcodes.keys():
|
|
asset_barcode = key
|
|
update = "INSERT INTO ism.ism_mounting_point_asset (asset_id, structure_element_id) VALUES ((SELECT id FROM ism.ism_asset WHERE barcode = '%s'), (SELECT id FROM ism.ism_structure_element WHERE barcode = '%s' ));" % (asset_barcode, barcodes[key])
|
|
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)
|