Suche…


Syntax

  1. LOAD DATA [LOW_PRIORITY | CONCURRENT] [LOCAL] INFILE 'Dateiname'
  2. INTO TABLE Tabellenname
  3. [Zeichensatz-Zeichensatz]
  4. [{FELDER | SPALTEN} [BEENDET DURCH 'string'] [[OPTIONAL] UMFASST DURCH 'char']]
  5. [LINES [STARTING BY 'string'] [TERMINATED BY 'string']]
  6. [IGNORE-Nummer {LINES | REIHEN}]
  7. [(col_name_oder_user_var, ...)]
  8. [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;


Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow