Sono in procinto di spostare i miei file su un altro computer, e una cosa che vorrei fare è trasferire i dati nel mio database MySQL. Voglio scaricare i database in file .sql, ma ho anche creato il database nome_db incluso nel file, in questo modo devo solo importare il file in mysql senza dover creare manualmente i database. C'è un modo per farlo?mysqldump con create database line
risposta
Per impostazione predefinita,
mysqldump
crea sempre l'istruzione
CREATE DATABASE IF NOT EXISTS db_name;
all'inizio del file di dettagli.
[EDIT ] alcune cose circa il file mysqldump
e si tratta di opzioni:
--all-databases
, -A
Dump tutte le tabelle in tutti i database. È lo stesso dell'utilizzo dell'opzione --databases
e della denominazione di tutti i database sulla riga di comando.
--add-drop-database
Aggiungi una dichiarazione DROP DATABASE
prima di ogni CREATE DATABASE
affermazione. Questa opzione viene in genere utilizzata in combinazione con l'opzione --all-databases
o --databases
perché non sono state scritte istruzioni CREATE DATABASE
a meno che non venga specificata una di queste opzioni.
--databases
, -B
Dump diversi database. Normalmente, mysqldump
considera l'argomento del primo nome sulla riga di comando come nome del database e i seguenti nomi come nomi di tabelle. Con questa opzione, tratta tutti gli argomenti del nome come nomi di database. Le dichiarazioni CREATE DATABASE
e USE
sono incluse nell'output prima di ogni nuovo database.
--no-create-db
, -n
Questa opzione sopprime le CREATE DATABASE
dichiarazioni che sono altrimenti inclusi nell'output se l'opzione --databases
o --all-databases
è dato.
Qualche tempo fa, c'era una domanda simile che in realtà chiedeva di non avere tale istruzione all'inizio del file (per file XML). Link a questa domanda is here.
Quindi, per rispondere alla tua domanda:
- se si dispone di un database di discarica, si dovrebbe avere la possibilità
--add-drop-database
nel vostromysqldump
dichiarazione. - se si dispone di più database per eseguire il dump, è necessario utilizzare l'opzione
--databases
o--all-databases
e la sintassiCREATE DATABASE
saranno aggiunti automaticamente
Maggiori informazioni su MySQL Reference Manual
La soluzione più semplice è quella di utilizzare l'opzione -B o --databases.Poi il comando CREATE database appare nel file di output. Per esempio:
mysqldump -uuser -ppassword -d -B --events --routines --triggers database_example > database_example.sql
Ecco colpo di testa di un file di dump:
-- 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 */;
Ecco come fare il dump del database (con il solo 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
Se anche voi volete i dati, rimuovere l'opzione --no-data
.
- 1. mysqldump senza "CREATE algoritmo" e "DEFINER"
- 2. mysqldump parziale del database
- 3. backup del database mysql con mysqldump
- 4. Suddividere un file mysqldump con più database, per database
- 5. Uso di utenti mysqldump e database
- 6. mysqldump abilita completamente i trigger con il nome del database
- 7. mysqldump non crea la sintassi del database di creazione
- 8. EF 4.1 CF: autorizzazione CREATE DATABASE negata nel database "master"
- 9. rake db: create throws errore "database inesistente" con postgresql
- 10. SQL Server Express Autorizzazione CREATE DATABASE negata nel database 'master'
- 11. mysqldump con db in un file separato
- 12. javascript line-line debugger
- 13. Come si usa mysqldump per esportare solo i comandi CREATE TABLE?
- 14. NSTextView scrolling line by line
- 15. Quick Line Colon Line Separator
- 16. Come fare line-break e line-wrapping con SDL-TTF?
- 17. Come posso ripristinare un database da un mysqldump contenente più database?
- 18. mysqldump con --where clausola non funziona
- 19. comando CREATE negato all'utente
- 20. Mantengo i diritti CREATE dopo DROP DATABASE in MySQL?
- 21. Test "Post create" con Rspec
- 22. CREATE TABLE con Dynamic Column
- 23. ripristino con mysqldump, ma dove sono i dati?
- 24. mysqldump un'INSERT per ogni riga di dati
- 25. record limite mysqldump tra
- 26. mysqldump: Si errore: 1449:
- 27. mysqldump da una query
- 28. mysqldump via PHP
- 29. Simulare CREATE DATABASE SE NON ESISTE per PostgreSQL?
- 30. Debug di CoffeeScript line-by-line
Questo è quello che stava succedendo con me. Non stavo usando - database o - tutti-database. Ho appena inserito il nome del database, che non creerebbe il drop database se esiste e crea una linea di database. – Vince
Sì, quindi nel caso di un database, aggiungere l'opzione '--add-drop-database' e tutto dovrebbe andare bene. Ricorda però che l'importazione del file dump in realtà farà cadere quel database e tutto ciò che è incluso, se tale è presente nel computer. – GregD
Per quale versione? mysqldump Ver 10.11 Distrib 5.0.51a, per debian-linux-gnu (i486) mysqldump --add-drop-database test | grep DROP emette solo linee DROP TABLE per il database di test. Devo aggiungere - database prima di ottenere un commento DROP DATABASE IF EXISTS 'test' – jla