448 MySQL - Technische Referenz f¨ur Version 5.0.1-alpha
• Solange die Tabellendefinitionsdatei ‘tabelle.frm’ g¨ultig ist, kann die Tabelle auf diese
Weise neu erzeugt werden, selbst wenn die Daten- oder Index-Dateien besch¨adigt wur-
den.
TRUNCATE ist eine Oracle-SQL-Erweiterung.
7.4.8 REPLACE-Syntax
REPLACE [LOW_PRIORITY | DELAYED]
[INTO] tabelle [(spalten_name,...)]
VALUES (ausdruck,...),(...),...
or REPLACE [LOW_PRIORITY | DELAYED]
[INTO] tabelle [(spalten_name,...)]
SELECT ...
or REPLACE [LOW_PRIORITY | DELAYED]
[INTO] tabelle
SET spalten_name=ausdruck, spalten_name=ausdruck,...
REPLACE funktioniert genau wie INSERT, ausser dass der alte Datensatz gel¨oscht wird, bevor
ein neuer eingef¨ugt wird, wenn ein alter Datensatz in der Tabelle denselben Wert wie der
neue auf einem eindeutigen Index hat. Siehe Abschnitt 7.4.3 [INSERT], Seite 442.
Mit anderen Worten k¨onnen Sie auf die Werte einer alten Zeile nicht mit einem REPLACE-
Statement zugreifen. In einigen alten MySQL-Versionen sah es so aus, als k¨onnten Sie das
tun, aber das war ein Bug und wurde korrigiert.
Wenn man einen REPLACE-Befehl benutzt, gibt mysql_affected_rows() 2 zur¨uck, wenn
die neue Zeile eine alte ersetzte. Das liegt daran, dass in diesem Fall eine Zeile eingef¨ugt
wurde und dann das Duplikat gel¨oscht wurde.
Das macht es einfach zu ¨uberpr¨ufen, ob REPLACE eine Zeile hinzugef¨ugt oder eine ersetzt
hat.
7.4.9 LOAD DATA INFILE-Syntax
LOAD DATA [LOW_PRIORITY | CONCURRENT] [LOCAL] INFILE ’datei.txt’
[REPLACE | IGNORE]
INTO TABLE tabelle
[FIELDS
[TERMINATED BY ’\t’]
[[OPTIONALLY] ENCLOSED BY ’’]
[ESCAPED BY ’\\’ ]
]
[LINES TERMINATED BY ’\n’]
[IGNORE Anzahl LINES]
[(spalten_name,...)]
Das LOAD DATA INFILE-Statement liest Zeilen aus einer Textdatei in eine Tabelle mit sehr
hoher Geschwindigkeit. Wenn das LOCAL-Schl¨usselwort angegeben wird, wird die Datei vom
Client-Host gelesen. Wenn LOCAL nicht angegeben wird, muss die Datei auf dem Server
liegen. (LOCAL ist verf¨ugbar ab MySQL-Version 3.22.6.)
Comentarios a estos manuales