Problem: Satz von Tabellen, die in eine Postgres-Datenbank analysiert werden müssen. Das Einfügen ist geradeaus. Was aber, wenn sich die Daten in der Tabelle ändern?PostgreSQL: Kombinieren löschen und aktualisieren
So liest ein Python3-Skript das Tabellenblatt, das eine Mischung aus Variablen (sheet1) und rohen Zeitreihen (sheet2) ist. Spreadsheets sind flexibel für die Datenerfassung, deshalb.
Allerdings stolpere ich mit wechselnden Daten in der Tabellenkalkulation. Ich benutze postgresql 9.6, und ich weiß, wie UPSERT zu tun.
Eine der Tabellen sieht so aus: | ID | key_to_other_table | Parameter | Wert |
UPSERT funktioniert perfekt, wenn der key_to_other_table und Parameter in der Tabelle ist oder nicht.
Das Problem liegt vor, wenn ein Parameter ursprünglich in der Tabelle enthalten war und in die Datenbank hochgeladen wurde, aber in der Tabelle korrigiert wurde, aber immer noch in der Datenbank vorhanden ist.
Ich brauche eine Art löschen zu tun, aber ich mag nicht ein stumpfes löscht alle Zeilen tun und dann einfach wieder einsetzen, wie ich die ID verwenden ...
Ich würde jetzt ein tun hole, lade alle IDs der Zeile, die mit einer bestimmten Tabelle verknüpft sind, führe eine Auffüllung der Werte durch und erhalte die ID davon.
Vergleichen Sie die beiden Listen und löschen Sie dann diejenigen, die nicht mehr benötigt werden. Aber das scheint wie drei verschiedene Datenbankabfragen ... Gibt es eine elegante Möglichkeit, dies in einem einzigen Schritt zu tun?
Was ist Ihr einzigartiger Schlüssel für diese Arbeit upsert? –
Das klingt nach einer großen Sauerei für mich. Ich würde Sie davon abraten, mit Spreadsheets zu arbeiten, wenn Sie Anforderungen an eine genaue/präzise Kontrolle Ihrer Daten haben. Postgres ist ein guter Ort, um Ihre Daten zu speichern. –
Jeder andere Vorschlag ist willkommen, aber die Arbeit mit Tabellen ist ein Kompromiss zwischen der Benutzerfreundlichkeit für die Operatoren und der Datenstruktur, die ich möchte. Die Tabelle ist strukturiert und basiert auf einer Vorlage. – Ilpepe4