DB diff machen um inserts/updates zu finden
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
abbild
abziehen
datenbank
differenz
erledigen
erzeugen
funktion
gefunden url
maschine
nutzen
schema
statement
tabelle
unterschied
unterschiedliche arten
url
vergleichen
zeitpunkt
zugreifen
zweite nehmen
-
Hi,
Gibt es eine einfache/schnelle Möglichkeit auf einer SQL Datenbank (Oracle) eine DIFF zwischen zwei Zuständen (Z1 & Z2) zu machen - und aus diesem Diff dann die nötigen update/insert Statements zu erzeugen mit denen man auch von Z1 zu Z2 kommen würde?
Dabei würden die zwei Zustände durch ein bisschen zeit (nicht Wochen) getrennt sein, sprich es ändert sich nicht 50% der Datenbank (und auch nicht das Schema).
Zum zugreifen auf die Oracle DB nutze ich zZ Oracle SQL Developer - aber wenn es auf der Linux Console einfacher geht ist das auch OK ;)
Edit: ... auf der Maschine läuft kein PHP.
Daher direkt Linux Bash/SQL, auch connect auf die PLSQL console (Oracle DB) oder über den SQL Developer.
Beitrag zuletzt geändert: 13.2.2018 0:23:56 von tmse -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Das klingt irgendwie nicht ganz logisch. Du hast zwei Zustände einer Tabelle (also zwei Tabellen) und du willst den Unterschied zwischen der ersten und der zweiten finden und dann kucken wie du zur zweiten kommst?
Da kannst doch einfach die Zweite nehmen, Werte von einander abziehen ist ja wohl moglich sonnst einfach Tabelle 1 mit Tabelle 2 überschreiben. Sonnst gibt PhP auch noch etliche Funktionen für Unterschiede zwischen a und b mit die man nutzen kann.
Aber was hast du vor? -
horstexplorer schrieb:
Du hast zwei Zustände einer Tabelle
Nein, es handelt sich um eine ganze Datenbank.
horstexplorer schrieb:
Da kannst doch einfach die Zweite nehmen, Werte von einander abziehen ist ja wohl moglich sonnst einfach Tabelle 1 mit Tabelle 2 überschreiben.
Nein, Ich will nicht Z2 ich will wissen was ich an Z1 ändern muss um zu Z2 zu kommen ...
horstexplorer schrieb:
Sonnst gibt PhP auch noch etliche Funktionen für Unterschiede zwischen a und b mit die man nutzen kann.
Das verstehe ich nicht ganz ... was du damit meinst.
Aber war irgendwie auch mein Fehler ... auf der Maschine läuft kein PHP.
Daher direkt Linux bash oder über den SQL Developer. (habe ich nicht so explizit geschrieben)
horstexplorer schrieb:
Aber was hast du vor?
Ich will die Statements (SQL) die nötig sind um von Z1 zu Z2 zukommen (nein Z2 will ich nicht). -
Ich vermute das in der DB nur Zeilenweise Werte hinzu kommen und nur int geändert wird. Dann müsste man theoretisch zu einem Zeitpunkt x ein Abbild der Datenbank erstellen und dann ID für ID mit der anderen vergleichen.
Das könnte man auf unterschiedliche Arten erledigen.
Halt im loop jede Spalte jeder Tabelle durch gehen und dann nach a-b arbeiten.
Oder du liest die Datenbanken komplett ein (ggf aus dem SQL File) und packst die Werte dann in mehrere Multidimensionale Arrays und die vergleichst du dann.
MS bietet für SQL Server (weiß nicht ob das auch bei den anderen geht) scheinbar EXCEPT und INTERSECT evtl kann das so in die Richtung passen.
Sonnst habe ich noch hier etwas gefunden
https://www.tutorials.de/threads/tabellen-vergleichen-und-nur-die-unterschiede-ausgeben.371110/
Wobei das alles mit hoher Sicherheit weder schnell noch kurz in der Umsetzung wird.
Vermutlich ist es einfacher sich bei jedem Wert der sich ändert die Differenz ausrechnen zu lassen und diese dann in einer extra DB zu speichern.
Beitrag zuletzt geändert: 13.2.2018 0:37:43 von horstexplorer -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage