it-swarm.com.de

mysqldump mit Datenbankzeile erstellen

Ich bin dabei, meine Dateien auf einen anderen Computer zu verschieben, und ich möchte die Daten in meine MySQL-Datenbank übertragen. Ich möchte die Datenbanken in .sql-Dateien speichern, habe aber auch die create database db_name in der Datei. Auf diese Weise muss ich die Datei in mysql importieren, ohne die Datenbanken manuell erstellen zu müssen. Gibt es eine Möglichkeit, dies zu tun?

42
Vince

Standardmäßig erstellt mysqldump die CREATE DATABASE IF NOT EXISTS db_name;-Anweisung immer am Anfang der Speicherauszugsdatei.

[EDIT] Einige Dinge über die mysqldump-Datei und ihre Optionen:

--all-databases, -A

Alle Tabellen in allen Datenbanken ausgeben. Dies ist identisch mit der Verwendung der Option --databases und der Benennung aller Datenbanken in der Befehlszeile.

--add-drop-database

Fügen Sie vor jeder DROP DATABASE-Anweisung eine CREATE DATABASE-Anweisung ein. Diese Option wird normalerweise in Verbindung mit der Option --all-databases oder --databases verwendet, da keine CREATE DATABASE-Anweisungen geschrieben werden, es sei denn, eine dieser Optionen ist angegeben.

--databases, -B

Legen Sie mehrere Datenbanken ab. Normalerweise behandelt mysqldump das erste Namensargument in der Befehlszeile als Datenbanknamen und die folgenden Namen als Tabellennamen. Mit dieser Option werden alle Namensargumente als Datenbanknamen behandelt. Die Anweisungen CREATE DATABASE und USE werden vor jeder neuen Datenbank in die Ausgabe aufgenommen.

--no-create-db, -n

Diese Option unterdrückt die CREATE DATABASE-Anweisungen, die ansonsten in der Ausgabe enthalten sind, wenn die Option --databases oder --all-databases angegeben ist.

Vor einiger Zeit gab es eine ähnliche Frage, ob eine solche Anweisung am Anfang der Datei nicht vorhanden war (für XML-Datei). Link zu dieser Frage ist hier .

Um Ihre Frage zu beantworten:

  • wenn Sie über eine Datenbank verfügen, die gesichert werden soll, sollten Sie die Option --add-drop-database in Ihrer mysqldump-Anweisung verwenden.
  • wenn Sie mehrere Datenbanken sichern möchten, sollten Sie die Option --databases oder --all-databases verwenden. Die CREATE DATABASE-Syntax wird automatisch hinzugefügt

Weitere Informationen finden Sie unter MySQL-Referenzhandbuch

56
GregD

Die einfachste Lösung ist die Verwendung der Option -B oder --databases. Dann erscheint der Datenbankbefehl CREATE in der Ausgabedatei . Beispiel:

mysqldump -uuser -ppassword -d -B --events --routines --triggers database_example > database_example.sql

Hier ist ein Dumpfile-Header:

-- MySQL dump 10.13  Distrib 5.5.36-34.2, for Linux (x86_64)
--
-- Host: localhost    Database: database_example
-- ------------------------------------------------------
-- Server version       5.5.36-34.2-log

/*!40101 SET @[email protected]@CHARACTER_SET_CLIENT */;
/*!40101 SET @[email protected]@CHARACTER_SET_RESULTS */;
/*!40101 SET @[email protected]@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
/*!40103 SET @[email protected]@TIME_ZONE */;
/*!40103 SET TIME_ZONE='+00:00' */;
/*!40014 SET @[email protected]@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @[email protected]@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @[email protected]@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @[email protected]@SQL_NOTES, SQL_NOTES=0 */;

--
-- Current Database: `database_example`
--

CREATE DATABASE /*!32312 IF NOT EXISTS*/ `database_example` /*!40100 DEFAULT CHARACTER SET utf8 */;
13
Baruch Lvovsky

So sichern Sie die Datenbank (nur mit dem Schema):

mysqldump -u root -p"passwd" --no-data --add-drop-database --databases my_db_name | sed 's#/[*]!40000 DROP DATABASE IF EXISTS my_db_name;#' >my_db_name.sql

Wenn Sie auch die Daten wünschen, entfernen Sie die Option --no-data.

0
linuxaos