| 1 |
"""
|
| 2 |
|
| 3 |
EndoMultipleTableFieldCompare
|
| 4 |
|
| 5 |
Created by:
|
| 6 |
Emanuel Borges
|
| 7 |
07.23.2021
|
| 8 |
|
| 9 |
This program will take a list of tables with the fields contained in those tables
|
| 10 |
and tell you which tables (fields not data) are subsumed by other tables and which
|
| 11 |
tables (fields not data) are identical. This is helpful to get an idea of how the
|
| 12 |
tables are possibly being used.
|
| 13 |
|
| 14 |
"""
|
| 15 |
|
| 16 |
import os
|
| 17 |
from datetime import datetime
|
| 18 |
|
| 19 |
if __name__ == '__main__':
|
| 20 |
## Full path on these three
|
| 21 |
tableAndFieldsReportName = r"C:\Users\eborges\Documents\Cases\Endo\Temp\DatabaseReports\20210723_Tables_Rows\csvVersion\sif backup all tab cols.csv"
|
| 22 |
subSetOutputFileName = r"C:\Users\eborges\Documents\Cases\Endo\Temp\DatabaseReports\20210723_Tables_Rows\csvVersion\sifBackup_MannyAnalysis(subsetOf)c.txt"
|
| 23 |
identicalOutputFileName = r"C:\Users\eborges\Documents\Cases\Endo\Temp\DatabaseReports\20210723_Tables_Rows\csvVersion\sifBackup_MannyAnalysis(identicalTo)c.txt"
|
| 24 |
|
| 25 |
## Start at zero
|
| 26 |
tableNameColumnNumber = 1
|
| 27 |
fieldNameColumnNumber = 2
|
| 28 |
|
| 29 |
|
| 30 |
contents = open(tableAndFieldsReportName).readlines()
|
| 31 |
|
| 32 |
|
| 33 |
if os.path.exists(subSetOutputFileName):
|
| 34 |
print("This file already exists! Please choose a different name.")
|
| 35 |
elif os.path.exists(identicalOutputFileName):
|
| 36 |
print("This file already exists! Please choose a different name.")
|
| 37 |
else:
|
| 38 |
subSetOutputFile = open(subSetOutputFileName,'w')
|
| 39 |
identicalOutputFile = open(identicalOutputFileName,'w')
|
| 40 |
|
| 41 |
|
| 42 |
contents = contents[1:]
|
| 43 |
tableFieldMatrix = {}
|
| 44 |
for line in contents:
|
| 45 |
line = line.replace("\n","")
|
| 46 |
line = line.split("|")
|
| 47 |
if line[1] in list(tableFieldMatrix.keys()):
|
| 48 |
tableFieldMatrix[line[tableNameColumnNumber]].append(line[fieldNameColumnNumber])
|
| 49 |
else:
|
| 50 |
tableFieldMatrix[line[tableNameColumnNumber]] = [line[fieldNameColumnNumber],]
|
| 51 |
|
| 52 |
|
| 53 |
tableFieldList = list(tableFieldMatrix.keys())
|
| 54 |
for tbl in tableFieldList:
|
| 55 |
allButMeList = list(tableFieldList)
|
| 56 |
allButMeList.remove(tbl)
|
| 57 |
for newTbl in allButMeList:
|
| 58 |
if sorted(tableFieldMatrix[tbl]) == sorted(tableFieldMatrix[newTbl]):
|
| 59 |
nl = identicalOutputFile.write("The field list in %s is identical to fields in %s|%s\n"% (tbl, newTbl,hash(tuple(sorted(tableFieldMatrix[tbl])))))
|
| 60 |
elif(set(tableFieldMatrix[tbl]).issubset(set(tableFieldMatrix[newTbl]))):
|
| 61 |
nl = subSetOutputFile.write("The field list in %s is a subset of %s\n"% (tbl, newTbl))
|
| 62 |
|
| 63 |
subSetOutputFile.close()
|
| 64 |
identicalOutputFile.close()
|
| 65 |
|