2011-01-12 22 views
0

Ich habe zwei Tabellen mit jeweils 50000 Daten. beide Tabellen-ID beginnt 1-50000 so, wenn ich versuche durchWie füge ich zwei Tabellen zusammen?

INSERT IGNORE 
    INTO table_1 
SELECT * 
    FROM table_2 

es vollständig die bestehende umschreibt mit zu table_1 von table_2 einzufügen. Ich will es nicht umschreiben, aber als neu hinzufügen, so wird es 100k total werden. aber kann 5 bis 10 Duplikate in der Indexspalte sagen, also doppelte Kontrolle auf Index auch. Wie kann ich das machen??

Antwort

0

Verwenden Sie PHP oder eine andere bevorzugte Sprache, wird dies etwa 10-20 Zeilen Code ...

+0

Dies beantwortet seine Frage nicht, so sollte im Kommentarabschnitt sein. Auch haben Sie keine Ahnung von seinem Setup, so dass meine Meinung nicht relevant für ihn ist. könnte Python-Anwendung usw. sein –

+0

Deshalb schrieb ich "oder eine andere Lieblingssprache" – Tobias

0

Wenn table_1 und table_2 benötigen, um verschiedene Schlüssel vor allem für eine erfolgreiche Zusammenführung sein

auftreten table_1 Tasten haben 1-50000 und table_2 Schlüsselwert starten aus 50001-100000

anfangen Für Duplizierung können Sie in mysql auf Update-Funktion mit dem Deal

INSERT INTO table_1 
    SELECT * FROM table_2 
ON DUPLICATE KEY UPDATE table_1.val=table_1.val 
0

Wenn es eine Primärschlüsselspalte gibt, müssen Sie sie aus der Einfügung ausschließen, wenn dort Dubletten vorhanden sind.

Eine Lösung besteht darin, mit einer Auswahl einzufügen, die doppelte Werte entfernt.

INSERT IGNORE INTO table_1 (f1, f2, f3) 
SELECT f1, f2, f2 FROM table_2 WHERE table_2.index NOT IN (SELECT index FROM table_1) 

OBS, das ist nicht sehr effizient auf einem langsamen Datenbankserver und konnte besser auf den Tischen mit mehr Informationen geschrieben werden.

Verwandte Themen