ich bin neu hier, sowie ein Anfänger mit Python/Datenbankprogrammierung und hoffe auf hilfreiche Ratschläge.
Nun zum Ausgangsszenario:
Ein TDMS-Dokument mit 93 Spalten und 50000 Zeilen, welches ich in meine postgres-Datenbank prozessieren möchte. Dabei habe ich mir überlegt mit einer for-loop zu arbeiten, in dem dann die Iterationsvariable als placeholder-string fungiert.
Zunächst Verbindung und importieren der TDMS-File (Die Database und Table waren schon vorher erzeugt):
Code: Alles auswählen
import psycopg2
name = input("Which Database?: ")
name_table = input("Which Table shows its columns?: ")
#connect to database
conn_tdms = psycopg2.connect(database = f"{name}", user = "xxxxxx", password = "xxxxxx", host = "xxxxxx", port = "xxxxxx")
conn_tdms.autocommit = True
#create cursor object
cur = conn_tdms.cursor()
#import TDMSfile
from nptdms import TdmsFile
FilePath = r"C:\Users\xxxx\xxx\xxxx\xxxx\my_file.tdms"
tdms_file = TdmsFile.read(FilePath)
group = tdms_file['groupname']
channel = group.channels()
print(group)
print(channel)
Code: Alles auswählen
lists = []
for i in group:
lists.append(i)
print(type(i))
print(lists)
Code: Alles auswählen
he = []
for x in lists:
z = x.replace(' ','')
he.append(z)
print(he)
Code: Alles auswählen
for v in he:
cur.execute("ALTER TABLE %s ADD column %s character varying(50) NOT NULL DEFAULT 'foo';" % (f'{name_table}', v))
Bei den rows komme ich leider mit dieser Methode nicht weiter. Ich brauche jeweils den ersten Eintrag von jeder Spalte um einen SQL-Befehl für eine row zu erzeugen.
Vielleicht kann jemand sagen ob dieser Ansatz überhaupt funktioniert? Oder einen besseren Vorschlag?
Ich bin mir nicht sicher ob dies die richtige Herangehensweise für große Datenmengen ist.
Mit freundlichen Grüßen
psycopg2