MySQL - Datenbankexport

Der einfachste Weg, Tabellendaten in eine Textdatei zu exportieren, ist die Verwendung von SELECT...INTO OUTFILE Anweisung, die ein Abfrageergebnis direkt in eine Datei auf dem Serverhost exportiert.

Exportieren von Daten mit der Anweisung SELECT ... INTO OUTFILE

Die Syntax für diese Anweisung kombiniert eine reguläre SELECT Befehl mit INTO OUTFILE filenameAm Ende. Das Standardausgabeformat ist das gleiche wie für den Befehl LOAD DATA. Die folgende Anweisung exportiert also dietutorials_tbl Tisch in /tmp/tutorials.txt als tabulatorgetrennte Datei mit Zeilenvorschub beendet.

mysql> SELECT * FROM tutorials_tbl 
   -> INTO OUTFILE '/tmp/tutorials.txt';

Sie können das Ausgabeformat mithilfe verschiedener Optionen ändern, um anzugeben, wie Spalten und Datensätze in Anführungszeichen und Trennzeichen gesetzt werden sollen. Verwenden Sie den folgenden Code, um die Tabelle tutorial_tbl in ein CSV-Format mit CRLF-terminierten Zeilen zu exportieren.

mysql> SELECT * FROM passwd INTO OUTFILE '/tmp/tutorials.txt'
   -> FIELDS TERMINATED BY ',' ENCLOSED BY '"'
   -> LINES TERMINATED BY '\r\n';

Das SELECT ... INTO OUTFILE hat die folgenden Eigenschaften -

  • Die Ausgabedatei wird direkt vom MySQL-Server erstellt, daher sollte der Dateiname angeben, wo die Datei auf den Serverhost geschrieben werden soll. Es gibt keine LOKALE Version der Aussage analog zu derLOCAL Version von LOAD DATA.

  • Sie müssen die haben MySQL FILE Privileg, die auszuführen SELECT ... INTO Erklärung.

  • Die Ausgabedatei darf noch nicht vorhanden sein. Dies verhindert, dass MySQL möglicherweise wichtige Dateien überfrachtet.

  • Sie sollten ein Anmeldekonto auf dem Serverhost haben oder eine Möglichkeit, die Datei von diesem Host abzurufen. Ansonsten derSELECT ... INTO OUTFILE Befehl wird höchstwahrscheinlich für Sie keinen Wert haben.

  • Unter UNIX wird die Datei erstellt world readableund gehört dem MySQL-Server. Dies bedeutet, dass Sie die Datei zwar lesen können, aber möglicherweise nicht löschen können.

Tabellen als Rohdaten exportieren

Das mysqldumpProgramm wird zum Kopieren oder Sichern von Tabellen und Datenbanken verwendet. Es kann die Tabellenausgabe entweder als schreibenRaw Datafile oder als eine Reihe von INSERT Anweisungen, die die Datensätze in der Tabelle neu erstellen.

Um eine Tabelle als Datendatei zu sichern, müssen Sie a angeben --tab Option, die das Verzeichnis angibt, in das der MySQL-Server die Datei schreiben soll.

Zum Beispiel, um die zu entleeren tutorials_tbl Tisch aus dem TUTORIALS Datenbank zu einer Datei in der /tmp Verwenden Sie einen Befehl wie unten gezeigt.

$ mysqldump -u root -p --no-create-info \
   --tab=/tmp tutorials tutorials_tbl
password ******

Exportieren von Tabelleninhalten oder Definitionen im SQL-Format

Verwenden Sie den folgenden Befehl, um eine Tabelle im SQL-Format in eine Datei zu exportieren.

$ mysqldump -u root -p TUTORIALS tutorials_tbl > dump.txt
password ******

Dadurch wird eine Erstellungsdatei mit dem unten gezeigten Inhalt erstellt.

-- MySQL dump 8.23
--
-- Host: localhost    Database: TUTORIALS
---------------------------------------------------------
-- Server version       3.23.58

--
-- Table structure for table `tutorials_tbl`
--

CREATE TABLE tutorials_tbl (
   tutorial_id int(11) NOT NULL auto_increment,
   tutorial_title varchar(100) NOT NULL default '',
   tutorial_author varchar(40) NOT NULL default '',
   submission_date date default NULL,
   PRIMARY KEY  (tutorial_id),
   UNIQUE KEY AUTHOR_INDEX (tutorial_author)
) TYPE = MyISAM;

--
-- Dumping data for table `tutorials_tbl`
--

INSERT INTO tutorials_tbl 
   VALUES (1,'Learn PHP','John Poul','2007-05-24');
INSERT INTO tutorials_tbl 
   VALUES (2,'Learn MySQL','Abdul S','2007-05-24');
INSERT INTO tutorials_tbl 
   VALUES (3,'JAVA Tutorial','Sanjay','2007-05-06');

Um mehrere Tabellen zu sichern, benennen Sie sie alle, gefolgt vom Argument des Datenbanknamens. Um eine gesamte Datenbank zu sichern, benennen Sie keine Tabellen nach der Datenbank, wie im folgenden Codeblock gezeigt.

$ mysqldump -u root -p TUTORIALS > database_dump.txt
password ******

Verwenden Sie den folgenden Code, um alle auf Ihrem Host verfügbaren Datenbanken zu sichern.

$ mysqldump -u root -p --all-databases > database_dump.txt
password ******

Die Option --all-database ist in der MySQL 3.23.12-Version verfügbar. Diese Methode kann verwendet werden, um eine Datenbanksicherungsstrategie zu implementieren.

Kopieren von Tabellen oder Datenbanken auf einen anderen Host

Wenn Sie Tabellen oder Datenbanken von einem MySQL-Server auf einen anderen kopieren möchten, verwenden Sie die mysqldump mit Datenbankname und Tabellenname.

Führen Sie den folgenden Befehl auf dem Quellhost aus. Dadurch wird die gesamte Datenbank gespeichertdump.txt Datei.

$ mysqldump -u root -p database_name table_name > dump.txt
password *****

Sie können die gesamte Datenbank kopieren, ohne einen bestimmten Tabellennamen zu verwenden, wie oben erläutert.

Führen Sie nun die Datei ftp dump.txt auf einem anderen Host aus und verwenden Sie den folgenden Befehl. Stellen Sie vor dem Ausführen dieses Befehls sicher, dass Sie den Datenbanknamen auf dem Zielserver erstellt haben.

$ mysql -u root -p database_name < dump.txt
password *****

Eine andere Möglichkeit, dies ohne Verwendung einer Zwischendatei zu erreichen, besteht darin, die Ausgabe von mysqldump direkt über das Netzwerk an den Remote-MySQL-Server zu senden. Wenn Sie vom Host, auf dem sich die Quellendatenbank befindet, eine Verbindung zu beiden Servern herstellen können, verwenden Sie den folgenden Befehl (Stellen Sie sicher, dass Sie auf beiden Servern Zugriff haben).

$ mysqldump -u root -p database_name \
   | mysql -h other-host.com database_name

In mysqldump stellt die Hälfte des Befehls eine Verbindung zum lokalen Server her und schreibt die Speicherauszugsausgabe in die Pipe. Die verbleibende Hälfte des Befehls stellt eine Verbindung zum Remote-MySQL-Server auf other-host.com her. Es liest die Pipe zur Eingabe und sendet jede Anweisung an den Server other-host.com.