2009-08-15 5 views
12

Ich habe eine Reihe von Daten, die ich einfügen möchte, und ich habe beschlossen, Bulk-Insert für mysql zu verwenden.bulk insert mysql - kann ich die ignore-Klausel verwenden? Gibt es eine Grenze für Nein? von Datensätzen für Masseneinfügung?

Einsatz in Freunde (Anforderer, Kumpel) Werte (Wert1, Wert2), (Wert2, Wert1), (value3, value4), (value4, value3), ...

ich möchte das wissen folgende:

1) kann ich ignorieren?

zB

Einsatz in Freunde ignorieren (Anforderer, Kumpel) Werte (Wert1, Wert2), (Wert2, Wert1), (value3, value4), (value4, value3), ...

, was passiert, wenn ich Duplikate haben? Wird es a) nicht alles einfügen? b) die Datensätze vor dem Dublettensatz einfügen und die Verarbeitung der Daten danach STOPPEN? c) das Duplikat ignorieren und mit dem Rest fortfahren?

2) Gibt es eine Grenze für die Nr. von Aufzeichnungen, die ich für eine Masseneinfügung so verwenden kann?

Vielen Dank.

Antwort

19

Ja, Sie können das Schlüsselwort "ignore" verwenden, und doppelte Fehler werden einfach ignoriert. Es fügt jede Zeile ein und überspringt diejenigen, die zu Duplikaten führen würden (und es wird nicht aufhören, Daten zu verarbeiten.) Wenn Sie so etwas tun (wobei wir annehmen, dass die erste Spalte ein Primärschlüssel ist):

einfügen ignorieren in c-Werte (1,1), (2,2), (3,3), (3,5), (4,5);

Dann bedeutet das, dass (3,3) eingefügt wird und (3,5) nicht. Alles außer (3,5) wird eingefügt (unter der Annahme einer neuen Tabelle).

Es gibt wahrscheinlich keine harte Grenze, aber Sie möchten vielleicht testen, um zu sehen, wo Sie die Linie basierend auf Ihren Bedürfnissen zeichnen sollten.

Bearbeiten: Es scheint, dass MySQL eine konfigurierbare Grenze für die Größe von SQL-Abfragen hat, mit dem Standardwert 1 MB. Weitere Informationen: http://dev.mysql.com/doc/refman/5.0/en/server-system-variables.html#sysvar_query_cache_limit.

6

Es gibt auch ein Limit von 50.000 Zeilen, die eine INSERT-Abfrage haben darf.

Verwandte Themen