una restaurar respaldar por hacer ejemplo datos crear consola como automaticamente mysql database backup mysqldump

restaurar - mysqldump con crear línea de base de datos



respaldar base de datos mysql phpmyadmin (3)

Estoy en el proceso de mover mis archivos a otra computadora, y una cosa que me gustaría hacer es transferir los datos en mi base de datos MySQL. Quiero volcar las bases de datos en archivos .sql, pero también tengo la base de datos de creación db_name incluida en el archivo, de esa manera solo tengo que importar el archivo a mysql sin tener que crear manualmente las bases de datos. ¿Hay una manera de hacer eso?


Aquí está cómo hacer volcar la base de datos (con solo el esquema):

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

Si también desea los datos, elimine la --no-data .


La solución más simple es usar la opción -B o --databases. Luego aparece el comando CREAR base de datos en el archivo de salida. Por ejemplo:

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

Aquí hay un encabezado de archivo de volcado:

-- 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 @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; /*!40101 SET NAMES utf8 */; /*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */; /*!40103 SET TIME_ZONE=''+00:00'' */; /*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */; /*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */; /*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE=''NO_AUTO_VALUE_ON_ZERO'' */; /*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */; -- -- Current Database: `database_example` -- CREATE DATABASE /*!32312 IF NOT EXISTS*/ `database_example` /*!40100 DEFAULT CHARACTER SET utf8 */;


Por defecto, mysqldump siempre crea CREATE DATABASE IF NOT EXISTS db_name; declaración al comienzo del archivo de volcado.

[ EDIT ] Algunas cosas sobre el archivo mysqldump y sus opciones:

--all-databases , -A

Vuelque todas las tablas en todas las bases de datos. Esto es lo mismo que usar la opción --databases y nombrar todas las bases de datos en la línea de comando.

--add-drop-database

Agregue una declaración DROP DATABASE antes de cada instrucción CREATE DATABASE . Esta opción se usa generalmente junto con la opción --databases --all-databases o --databases porque no se escriben sentencias CREATE DATABASE menos que se especifique una de esas opciones.

--databases , -B

Volcar varias bases de datos. Normalmente, mysqldump trata el argumento del primer nombre en la línea de comando como un nombre de base de datos y los siguientes nombres como nombres de tabla. Con esta opción, trata todos los argumentos de nombres como nombres de bases de datos. CREATE DATABASE y USE se incluyen en el resultado antes de cada nueva base de datos.

--no-create-db , -n

Esta opción suprime las CREATE DATABASE que de lo contrario están incluidas en el resultado si se da la --databases o --databases --all-databases .

Hace algún tiempo, hubo una pregunta similar preguntando sobre no tener tal declaración al principio del archivo (para el archivo XML). El enlace a esa pregunta está aquí .

Entonces para responder a tu pregunta:

  • si tiene una base de datos para volcar, debe tener la --add-drop-database en su declaración mysqldump .
  • si tiene que --databases varias bases de datos, debe usar la opción --databases o --databases --all-databases y la sintaxis CREATE DATABASE se agregará automáticamente

Más información en MySQL Reference Manual