Ich bin dabei, meine Dateien auf einen anderen Computer zu verschieben, und eine Sache, die ich tun möchte, ist, die Daten in meine MySQL-Datenbank zu übertragen. Ich möchte die Datenbanken in .sql-Dateien ablegen, habe aber auch die create dbbank db_name include in der Datei, so muss ich nur die Datei in mysql importieren, ohne die Datenbanken manuell erstellen zu müssen. Gibt es eine Möglichkeit, das zu tun?mysqldump mit Datenbankzeile erstellen
Antwort
Standardmäßig erstellt
mysqldump
immer die
CREATE DATABASE IF NOT EXISTS db_name;
-Anweisung am Anfang der Dump-Datei.
[EDIT] Ein paar Dinge über die mysqldump
Datei und es ist Optionen:
--all-databases
, -A
Dump alle Tabellen in allen Datenbanken. Dies entspricht der Verwendung der Option --databases
und Benennung aller Datenbanken in der Befehlszeile.
--add-drop-database
eine DROP DATABASE
Aussage vor jeder CREATE DATABASE
Anweisung hinzufügen. 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
Dump mehrere Datenbanken. Normalerweise behandelt mysqldump
das Vornamenargument in der Befehlszeile als Datenbanknamen und folgende Namen als Tabellennamen. Mit dieser Option werden alle Namensargumente als Datenbanknamen behandelt. CREATE DATABASE
und USE
Anweisungen sind in der Ausgabe vor jeder neuen Datenbank enthalten.
--no-create-db
, -n
Diese Option unterdrückt die CREATE DATABASE
Aussagen, die sonst in der Ausgabe enthalten sind, wenn die --databases
oder --all-databases
Option gegeben ist.
Vor einiger Zeit gab es eine ähnliche Frage, die tatsächlich fragte, ob eine solche Anweisung am Anfang der Datei (für XML-Datei) fehlt. Link zu dieser Frage is here.
So Ihre Frage zu beantworten:
- , wenn Sie eine Datenbank zu sichern, sollten Sie die
--add-drop-database
Option in Ihrermysqldump
Äußerung. - , wenn Sie mehrere Datenbanken dumpen haben, können Sie die Option
--databases
oder--all-databases
und dieCREATE DATABASE
Syntax automatisch hinzugefügt werden Die einfachste Lösung ist die Verwendung Option sollte
Weitere Informationen unter MySQL Reference Manual
-B oder --databases.Then CREATE Datenbankbefehl erscheint in der Ausgabedatei. Zum Beispiel:
mysqldump -uuser -ppassword -d -B --events --routines --triggers database_example > database_example.sql
Hier ist ein Header dumpfile:
-- 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 */;
Hier ist, wie die Datenbank zu tun Dump (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 wollen die Daten, entfernen Sie die Option --no-data
.
- 1. Objekt aus Datenbankzeile erstellen
- 2. Mysqldump Frage
- 3. eine Tabelle mit mysqldump ignorieren?
- 4. Backup-Datenbank mit PHP - mysqldump
- 5. mysqldump Kompression
- 6. mysqldump mit where-Klausel mit referenzieller Integrität
- 7. Verwenden von mysqldump und Datenbankbenutzern
- 8. Amazon RDS mysqldump Probleme
- 9. Batch MysqlDump Fehler
- 10. Dateigröße 0 mysqldump
- 11. QDataWidgetMapper-Index für sqlite Datenbankzeile in pyqt
- 12. mysqldump mit db in einer separaten Datei
- 13. mysqldump Qualifiziert vollständig Trigger mit Datenbankname
- 14. mysqldump mit --Wo Klausel funktioniert nicht
- 15. Verwenden von GZIP-Komprimierung mit mysqldump
- 16. Hinzufügen von Anführungszeichen zu MySQLdump mit Sed
- 17. mysqldump von Remote-Host
- 18. Mysqldump: Got Fehler: 1449:
- 19. mysqldump der letzten Aufzeichnungen
- 20. mysqldump aus einer Abfrage
- 21. mysqldump Befehl funktioniert nicht?
- 22. Mysqldump einfache Batch-Ausgabe
- 23. Wie lösche ich eine Datenbankzeile mit eckigen und php?
- 24. Datenbankzeile sperren bei Lesen mit Entity Framework Core
- 25. Yü und Datenbankzeile in Drop-Down-
- 26. Dynamische Dateinamen in mysqldump - Datum
- 27. Mysqldump mehr als eine Tabelle?
- 28. mysqldump von einem Remote-Server
- 29. perl style Regex mysqldump Spaltendefinition
- 30. mysqldump auf einer Merge-Tabelle
Das ist, was mit mir passiert ist. Ich habe weder --databases noch --all-databases benutzt. Ich lege einfach den Datenbanknamen, der die Drop-Datenbank nicht erstellen würde, wenn vorhanden, und Datenbankzeile erstellen. – Vince
Ja, dann, im Falle einer Datenbank, fügen Sie die '--add-drop-database' Option hinzu und alles sollte in Ordnung sein. Beachten Sie jedoch, dass beim Import der Dump-Datei diese Datenbank und alles, was darin enthalten ist, tatsächlich gelöscht wird, sofern dies auf dem Computer vorhanden ist. – GregD
Für welche Version war das? mysqldump Ver 10.11 Distrib 5.0.51a, für debian-linux-gnu (i486) mysqldump --add-drop-database test | grep DROP gibt nur DROP TABLE-Zeilen für die Testdatenbank aus. Ich muss --databases addieren, bevor ich einen auskommentierten DROP DATABASE IF EXISTS 'test' bekomme – jla