1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen
  2. Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, Oracle, Sql-Server, Postgres, Access uvm
    Information ausblenden

Update table 1 von table2

Dieses Thema im Forum "SQLite" wurde erstellt von datenbeisser, 16 November 2016.

  1. datenbeisser

    datenbeisser Aktiver Benutzer

    Hi,

    stehe als Anfänger mal wieder auf dem Schlauch.

    Ich habe eine umfangreiche Tabelle1, für die ich zu Zeiten eine kleine Update-Tabelle2 erhalte.

    Beide Tabellen haben Datensätze mit gleicher Struktur (identische Columnen).
    In der kleinen Update-Tabelle2 befinden sich Korrekturen existierender Datensätzen aber auch neue, noch nicht vorhandene, Datensätze.

    Jeder Datensatz aus Tabelle2 soll einfach in Tabelle1 geschrieben werden. Egal ob der Datensatz bereits in Tabelle1 bereits vorhanden ist (Datensatz überschreiben), oder noch nicht (Datensatz hinzufügen).

    In beiden Tabellen sind ca. 30 Columnen. Es wäre toll, wenn es einen Befehl gibt, in dem nicht jede Columne einzeln angegeben werden muss, weil immer ein kompletter Datensatz mit allen Columnen geschrieben bzw. überschrieben werden soll.

    Table 1:
    id_name_col2_col3_col4...
    1___a___abc
    2___b___def
    3___c___adf

    Table 2:
    id_name_col2_col3_col4....
    2___y___345
    4___z___xyz

    Gewünschtes Resultat:
    Table 1:
    id_name_col2_col3_col4...
    1___a___abc
    2___y___345
    3___c___adf
    4___z___xyz

    Vermutlich ist das doch eine Aufgabe, die in der Praxis oft vorkommt, oder?

    Mit welchem SQLite Befehl kann das am einfachsten realisiert werden?

    Grüße,
    Datenbeisser
     
    Zuletzt bearbeitet: 16 November 2016
  2. Dukel

    Dukel Datenbank-Guru

  3. datenbeisser

    datenbeisser Aktiver Benutzer

    Das funktioniert leider nicht. Damit würde das Ergebnis so aussehen:

    Table 1:
    id_name_col2_col3_col4....
    2___y___345
    4___z___xyz

    Gewünscht ist aber:

    Table 1:
    id_name_col2_col3_col4...
    1___a___abc
    2___y___345
    3___c___adf
    4___z___xyz

    Tabelle1 ist ca. 20 Megabyte groß. Die Update Tabelle2 nur ca. 300 Kilobyte. Weil letztere eben nur Updates und Ergänzungen für die Tabelle1 enthält.
     
  4. datenbeisser

    datenbeisser Aktiver Benutzer

    Ich hatte mir so etwas vorgestellt:

    INSERT OR REPLACE INTO Table1
    SELECT * FROM Table2

    Obwohl "INSERT OR REPLACE" fast nicht falsch zu verstehen sind, tun sie in SQLite nicht was ich erwartet hatte.
    Vorhandene Datensätze (Rows) werden damit nicht überschrieben, sondern hinzugefügt (REPLACE scheint nicht zu funktionieren). So dass doppelte Datensätze mit gleicher id enstehen :-(

    Weiss jemand wie es richtig gemacht wird?
     
  5. datenbeisser

    datenbeisser Aktiver Benutzer

    Habe glaube ich den Fehler gefunden:

    INSERT OR REPLACE INTO Table1
    SELECT * FROM Table2

    Dieser Befehl funktioniert doch, ABER nur wenn die Columne id mit "UNIQUE ON CONFLICT IGNORE" erstellt wurde bzw. gekennzeichnet ist.
     
Die Seite wird geladen...

Diese Seite empfehlen