Kapitel 7: MySQL-Sprachreferenz 449
Aus Sicherheitsgr¨unden m¨ussen Dateien, die als auf dem Server liegende Textdateien eingele-
sen werden, entweder im Datenbank-Verzeichnis liegen oder von allen lesbar sein. Dar¨ub er
hinaus brauchen Sie, wenn Sie LOAD DATA INFILE mit Server-Dateien benutzen, die file-
Berechtigung auf dem Server-Host. Siehe Abschnitt 5.2.5 [Privileges], Seite 186.
Wenn Sie das Schl¨usselwort LOW_PRIORITY angeben, wird das LOAD DATA-Statement
verz¨ogert, bis keine anderen Clients mehr aus der Tabelle lesen.
Wenn Sie das Schl¨usselwort CONCURRENT bei einer MyISAM-Tabelle angeben, k¨onnen andere
Threads Daten aus der Tabelle abrufen, w¨ahrend LOAD DATA ausgef¨uhrt wird. Die Be-
nutzung dieser Option beeinflusst nat¨urlich die Performance von LOAD DATA ein bisschen,
selbst wenn kein anderer Thread die Tabelle zur gleichen Zeit benutzt.
LOCAL ist etwas langsamer, als wenn der Server direkt auf die Dateien zugreifen kann, weil
die Inhalte der Datei vom Client-Host auf den Server-Host ¨ubertragen werden m¨ussen. Auf
der anderen Seite ben¨otigen Sie keine file-Berechtigung, um lokale Dateien zu laden.
Wenn Sie MySQL vor Version 3.23.24 benutzen, k¨onnen Sie nicht aus einer FIFO lesen, wenn
Sie LOAD DATA INFILE benutzen. Wenn Sie aus einer FIFO lesen m¨ussen (zum Beispiel aus
der Ausgabe von gunzip), benutzen Sie statt dessen LOAD DATA LOCAL INFILE.
Sie k¨onnen Daten-Dateien auch mit dem mysqlimport-Dienstprogramm laden; es arbeitet,
indem es einen LOAD DATA INFILE-Befehl an den Server schickt. Die --local-Option veran-
lasst mysqlimport, Daten-Dateien vom Client-Host zu lesen. Sie k¨onnen die --compress-
Option angeben, um bessere Performance ¨uber langsame Netzwerke zu erzielen, wenn der
Client und der Server das komprimierte Protokoll unterst¨utzen.
Bei der Suche nach Dateien auf dem Server-Host geht der Server nach folgenden Regeln
vor:
• Wenn ein absoluter Pfadname angegeben wird, benutzt der Server den Pfadnamen so,
wie er ist.
• Wenn ein relativer Pfadname mit einer oder mehreren f¨uhrenden Bestandteilen
angegeben wird, sucht der Server die Datei relativ zum Daten-Verzeichnis des Servers.
• Wenn ein Dateiname ohne f¨uhrende Bestandteile angegeben wird, sucht der Server die
Datei im Datenbank-Verzeichnis der aktuellen Datenbank.
Beachten Sie, dass diese Regeln bedeuten, dass eine Datei, die als ‘./meinedatei.txt’
angegeben wird, aus dem Daten-Verzeichnis des Servers gelesen wird, wohingegen eine Datei,
die als ‘meinedatei.txt’ angegeben wird, aus dem Datenbank-Verzeichnis der aktuellen
Datenbank gelesen wird. Das folgende LOAD DATA-Statement beispielsweise liest die Datei
‘daten.txt’ aus dem Datenbank-Verzeichnis von datenbank1, weil datenbank1 die aktuelle
Datenbank ist, obwohl das Statement die Datei explizit in eine Tabelle in der datenbank2-
Datenbank l¨adt:
mysql> USE datenbank1;
mysql> LOAD DATA INFILE "daten.txt" INTO TABLE datenbank2.meine_tabelle;
Die REPLACE- und IGNORE-Schl¨usselw¨orter steuern die Handhabung von Eingabe-
Datens¨atzen, die bestehende Datens¨atze auf eindeutigen Schl¨usselwerten duplizieren.
Wenn Sie REPLACE angeben, ersetzen neue Zeilen bestehende Zeilen, die denselben
eindeutigen Schl¨usselwert besitzen. Wenn Sie IGNORE angeben, werden Eingabe-Zeilen,
die eine bestehende Zeile auf einem Schl¨usselwert duplizieren, ¨ubersprungen. Wenn Sie
Comentarios a estos manuales