Daten in MySQL importieren

In diesem Kapitel stellen wir einige einfache MySQL-Datenimportbefehle vor.

mysql -u your_username -p -h your_host -P your_port -D your_database

1. Import mit dem mysql-Befehl

Die Syntax zum Importieren mit dem mysql-Befehl lautet:

mysql -u your_username -p -h your_host -P your_port -D your_database

your_username, your_host, your_port und your_database sind jeweils Ihr MySQL-Benutzername, Host, Port und Ihre Datenbank.

Beispiel:

# mysql -uroot -p123456 < example.sql

Der obige Befehl importiert die gesamte gesicherte Datenbank example.sql.

Nach Ausführung des obigen Befehls fordert das System das Passwort des MySQL-Benutzers an. Geben Sie das Passwort ein und drücken Sie die Eingabetaste.

Auf diese Weise führt MySQL die Anweisungen in der SQL-Datei aus und importiert die Daten in die angegebene Datenbank.

Bitte beachten Sie: Wenn die SQL-Datei Anweisungen zum Erstellen einer Datenbank enthält, stellen Sie sicher, dass die Datenbank bereits existiert, bevor Sie den Import durchführen. Wenn die Datei Anweisungen zum Erstellen von Tabellen enthält, stellen Sie sicher, dass die Tabellen nicht existieren oder leer sind, um Konflikte beim Importieren von Daten zu vermeiden.


2. Import mit dem Befehl source

Um eine Datenbank mit dem Befehl source zu importieren, müssen Sie sich zuerst am Datenbank-Terminal anmelden:

mysql> create database abc;      # 创建数据库
mysql> use abc;                  # 使用已创建的数据库 
mysql> set names utf8;           # 设置编码
mysql> source /home/abc/abc.sql  # 导入备份数据库

Der Vorteil der Verwendung des Befehls source besteht darin, dass Sie ihn direkt in der MySQL-Befehlszeile ausführen können, ohne MySQL verlassen und andere Befehle verwenden zu müssen.


3. Datenimport mit LOAD DATA

MySQL stellt die Anweisung LOAD DATA INFILE zum Einfügen von Daten bereit. Das folgende Beispiel liest die Datei dump.txt aus dem aktuellen Verzeichnis und fügt die Daten aus dieser Datei in die Tabelle mytbl in der aktuellen Datenbank ein.

mysql> LOAD DATA LOCAL INFILE 'dump.txt' INTO TABLE mytbl;

Wenn das Schlüsselwort LOCAL angegeben ist, bedeutet dies, dass die Datei vom Client-Host aus über den Pfad gelesen wird. Wenn es nicht angegeben ist, wird die Datei auf dem Server über den Pfad gelesen.

Sie können in der LOAD DATA-Anweisung explizit das Trennzeichen für Spaltenwerte und das Zeilenendezeichen angeben, aber die Standardmarkierungen sind das Tabulatorzeichen und der Zeilenumbruch.

Die Syntax der FIELDS- und LINES-Klauseln ist in beiden Befehlen gleich. Beide Klauseln sind optional, aber wenn beide angegeben werden, muss die FIELDS-Klausel vor der LINES-Klausel stehen.

Wenn der Benutzer eine FIELDS-Klausel angibt, sind ihre Unterklauseln (TERMINATED BY, [OPTIONALLY] ENCLOSED BY und ESCAPED BY) ebenfalls optional. Der Benutzer muss jedoch mindestens eine davon angeben.

mysql> LOAD DATA LOCAL INFILE 'dump.txt' INTO TABLE mytbl
  -> FIELDS TERMINATED BY ':'
  -> LINES TERMINATED BY '\r\n';

Standardmäßig fügt LOAD DATA Daten gemäß der Spaltenreihenfolge in der Datendatei ein. Wenn die Spalten in der Datendatei nicht mit den Spalten der Tabelle übereinstimmen, in die eingefügt wird, müssen Sie die Spaltenreihenfolge angeben.

Wenn beispielsweise die Spaltenreihenfolge in der Datendatei a,b,c lautet, die Spaltenreihenfolge in der Tabelle jedoch b,c,a, dann lautet die Syntax für den Datenimport wie folgt:

mysql> LOAD DATA LOCAL INFILE 'dump.txt' 
    -> INTO TABLE mytbl (b, c, a);

4. Datenimport mit mysqlimport

Der mysqlimport-Client bietet eine Kommandozeilenschnittstelle für die Anweisung LOAD DATA INFILE. Die meisten Optionen von mysqlimport entsprechen direkt den Klauseln von LOAD DATA INFILE.

Um Daten aus der Datei dump.txt in die Datentabelle mytbl zu importieren, können Sie den folgenden Befehl verwenden:

$ mysqlimport -u root -p --local mytbl dump.txt
password *****

Mit dem Befehl mysqlimport können Optionen angegeben werden, um das angegebene Format festzulegen. Das Format der Befehlsanweisung ist wie folgt:

$ mysqlimport -u root -p --local --fields-terminated-by=":" \
   --lines-terminated-by="\r\n"  mytbl dump.txt
password *****

Verwenden Sie die Option --columns in der mysqlimport-Anweisung, um die Spaltenreihenfolge festzulegen:

$ mysqlimport -u root -p --local --columns=b,c,a \
    mytbl dump.txt
password *****

Gängige mysqlimport-Optionen

OptionFunktion
-d oder --deleteLöschen Sie alle Informationen in der Datentabelle, bevor Sie neue Daten darin importieren.
-f oder --force Unabhängig davon, ob Fehler auftreten, setzt mysqlimport das Einfügen von Daten zwangsweise fort.
-i oder --ignore mysqlimport überspringt oder ignoriert Zeilen, die denselben eindeutigen Schlüssel haben; Daten in der importierten Datei werden ignoriert.
-l oder -lock-tables Sperrt die Tabelle, bevor Daten eingefügt werden, wodurch verhindert wird, dass Abfragen und Aktualisierungen von Benutzern beeinträchtigt werden, während Sie die Datenbank aktualisieren.
-r oder -replace Diese Option hat die entgegengesetzte Funktion der Option -i; sie ersetzt Datensätze in der Tabelle, die denselben eindeutigen Schlüssel haben.
--fields-enclosed- by= charGibt an, wodurch die Datensätze in der Textdatei eingeschlossen werden. In vielen Fällen werden Daten in doppelte Anführungszeichen eingeschlossen. Standardmäßig werden Daten durch kein Zeichen eingeschlossen.
--fields-terminated- by=charGibt das Trennzeichen zwischen Datenwerten an. In durch Punkt getrennten Dateien ist das Trennzeichen ein Punkt. Sie können diese Option verwenden, um das Trennzeichen zwischen Daten anzugeben. Das Standardtrennzeichen ist das Tabulatorzeichen (Tab).
--lines-terminated- by=strDiese Option gibt die Trennzeichenfolge oder das Trennzeichen zwischen Datenzeilen in der Textdatei an. Standardmäßig verwendet mysqlimport einen Zeilenumbruch als Zeilentrennzeichen. Sie können anstelle eines einzelnen Zeichens eine Zeichenfolge verwenden: einen Zeilenumbruch oder einen Wagenrücklauf.

Zu den weiteren häufig verwendeten Optionen des mysqlimport-Befehls gehören -v zum Anzeigen der Version, -p zum Abfragen des Passworts und so weiter.

Weitere Erweiterungen