MySQL
LADEN DATEN INFILE
Suche…
Syntax
- LOAD DATA [LOW_PRIORITY | CONCURRENT] [LOCAL] INFILE 'Dateiname'
- INTO TABLE Tabellenname
- [Zeichensatz-Zeichensatz]
- [{FELDER | SPALTEN} [BEENDET DURCH 'string'] [[OPTIONAL] UMFASST DURCH 'char']]
- [LINES [STARTING BY 'string'] [TERMINATED BY 'string']]
- [IGNORE-Nummer {LINES | REIHEN}]
- [(col_name_oder_user_var, ...)]
- [SET col_name = Ausdruck, ...]
Verwenden von LOAD DATA INFILE, um große Datenmengen in die Datenbank zu laden
Stellen Sie sich das folgende Beispiel vor, vorausgesetzt, Sie verfügen über eine durch;
1;max;male;manager;12-7-1985
2;jack;male;executive;21-8-1990
.
.
.
1000000;marta;female;accountant;15-6-1992
Erstellen Sie die Tabelle zum Einfügen.
CREATE TABLE `employee` ( `id` INT NOT NULL ,
`name` VARCHAR NOT NULL,
`sex` VARCHAR NOT NULL ,
`designation` VARCHAR NOT NULL ,
`dob` VARCHAR NOT NULL );
Verwenden Sie die folgende Abfrage, um die Werte in diese Tabelle einzufügen.
LOAD DATA INFILE 'path of the file/file_name.txt'
INTO TABLE employee
FIELDS TERMINATED BY ';' //specify the delimiter separating the values
LINES TERMINATED BY '\r\n'
(id,name,sex,designation,dob)
Betrachten Sie den Fall, in dem das Datumsformat kein Standard ist.
1;max;male;manager;17-Jan-1985
2;jack;male;executive;01-Feb-1992
.
.
.
1000000;marta;female;accountant;25-Apr-1993
In diesem Fall können Sie das Format der dob
Spalte vor dem Einfügen ändern.
LOAD DATA INFILE 'path of the file/file_name.txt'
INTO TABLE employee
FIELDS TERMINATED BY ';' //specify the delimiter separating the values
LINES TERMINATED BY '\r\n'
(id,name,sex,designation,@dob)
SET date = STR_TO_DATE(@date, '%d-%b-%Y');
In diesem Beispiel von LOAD DATA INFILE werden nicht alle verfügbaren Funktionen angegeben.
Sie können weitere Referenzen auf LOAD DATA INFILE siehe hier .
Importieren Sie eine CSV-Datei in eine MySQL-Tabelle
Mit dem folgenden Befehl werden CSV-Dateien in eine MySQL-Tabelle mit denselben Spalten importiert, wobei die CSV-Zitat- und Escape-Regeln beachtet werden.
load data infile '/tmp/file.csv'
into table my_table
fields terminated by ','
optionally enclosed by '"'
escaped by '"'
lines terminated by '\n'
ignore 1 lines; -- skip the header row
Laden Sie Daten mit Duplikaten
Wenn Sie den Befehl LOAD DATA INFILE
, um eine Tabelle mit vorhandenen Daten zu LOAD DATA INFILE
, werden Sie häufig feststellen, dass der Import aufgrund von Duplikaten fehlschlägt. Es gibt mehrere Möglichkeiten, dieses Problem zu überwinden.
LOAD DATA LOKAL
Wenn diese Option auf Ihrem Server aktiviert wurde, kann mit ihr eine Datei geladen werden, die auf dem Client-Computer und nicht auf dem Server vorhanden ist. Ein Nebeneffekt ist, dass doppelte Zeilen für eindeutige Werte ignoriert werden.
LOAD DATA LOCAL INFILE 'path of the file/file_name.txt'
INTO TABLE employee
LOAD DATA INFILE 'fname' REPLACE
Wenn das Schlüsselwort replace verwendet wird, führen doppelte eindeutige oder Primärschlüssel dazu, dass die vorhandene Zeile durch neue ersetzt wird
LOAD DATA INFILE 'path of the file/file_name.txt'
REPLACE INTO TABLE employee
LOAD DATA INFILE 'fname' IGNORE
Im Gegensatz zu REPLACE
werden vorhandene Zeilen beibehalten und neue ignoriert. Dieses Verhalten ähnelt dem oben beschriebenen LOCAL
. Die Datei muss jedoch nicht auf dem Clientcomputer vorhanden sein.
LOAD DATA INFILE 'path of the file/file_name.txt'
IGNORE INTO TABLE employee
Laden über Zwischentabelle
Das Ignorieren oder Ersetzen aller Duplikate ist manchmal nicht die ideale Option. Möglicherweise müssen Sie Entscheidungen basierend auf dem Inhalt anderer Spalten treffen. In diesem Fall ist es am besten, in eine Zwischentabelle zu laden und von dort zu übertragen.
INSERT INTO employee SELECT * FROM intermediary WHERE ...
Import Export
einführen
SELECT a,b,c INTO OUTFILE 'result.txt' FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY '\n' FROM table;
Export
LOAD DATA INFILE 'result.txt' INTO TABLE table;