ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/ns_dev/Python/NinoCode/Active_prgs/Redgrave/EndoMultipleTableFieldCompare.py
Revision: 781
Committed: Fri Aug 5 02:20:22 2022 UTC (3 years, 7 months ago) by nino.borges
Content type: text/x-python
File size: 2728 byte(s)
Log Message:
general updates

File Contents

# Content
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