MySQL - Exportación de base de datos
La forma más sencilla de exportar los datos de una tabla a un archivo de texto es mediante el SELECT...INTO OUTFILE declaración que exporta el resultado de una consulta directamente a un archivo en el servidor.
Exportación de datos con la instrucción SELECT ... INTO OUTFILE
La sintaxis de esta declaración combina un SELECT comando con INTO OUTFILE filenameal final. El formato de salida predeterminado es el mismo que para el comando LOAD DATA. Entonces, la siguiente declaración exporta eltutorials_tbl mesa en /tmp/tutorials.txt como un archivo delimitado por tabulaciones y terminado en salto de línea.
mysql> SELECT * FROM tutorials_tbl
-> INTO OUTFILE '/tmp/tutorials.txt';
Puede cambiar el formato de salida utilizando varias opciones para indicar cómo citar y delimitar columnas y registros. Para exportar la tabla tutorial_tbl en formato CSV con líneas terminadas en CRLF, utilice el siguiente código.
mysql> SELECT * FROM passwd INTO OUTFILE '/tmp/tutorials.txt'
-> FIELDS TERMINATED BY ',' ENCLOSED BY '"'
-> LINES TERMINATED BY '\r\n';
los SELECT ... INTO OUTFILE tiene las siguientes propiedades:
El archivo de salida es creado directamente por el servidor MySQL, por lo que el nombre del archivo debe indicar dónde desea que se escriba el archivo en el servidor. No existe una versión LOCAL de la declaración análoga a laLOCAL versión de LOAD DATA.
Debes tener el MySQL FILE privilegio para ejecutar el SELECT ... INTO declaración.
El archivo de salida no debe existir todavía. Esto evita que MySQL golpee archivos que pueden ser importantes.
Debe tener una cuenta de inicio de sesión en el host del servidor o alguna forma de recuperar el archivo de ese host. De lo contrario, elSELECT ... INTO OUTFILE Lo más probable es que el comando no tenga ningún valor para usted.
En UNIX, se crea el archivo world readabley es propiedad del servidor MySQL. Esto significa que, aunque podrá leer el archivo, es posible que no pueda eliminarlo.
Exportación de tablas como datos sin procesar
los mysqldumpEl programa se utiliza para copiar o realizar copias de seguridad de tablas y bases de datos. Puede escribir la salida de la tabla como unRaw Datafile o como un conjunto de INSERT declaraciones que recrean los registros en la tabla.
Para volcar una tabla como archivo de datos, debe especificar un --tab opción que indica el directorio donde desea que el servidor MySQL escriba el archivo.
Por ejemplo, para volcar el tutorials_tbl mesa de la TUTORIALS base de datos a un archivo en el /tmp directorio, use un comando como se muestra a continuación.
$ mysqldump -u root -p --no-create-info \
--tab=/tmp tutorials tutorials_tbl
password ******
Exportación de contenidos o definiciones de tablas en formato SQL
Para exportar una tabla en formato SQL a un archivo, use el comando que se muestra a continuación.
$ mysqldump -u root -p TUTORIALS tutorials_tbl > dump.txt
password ******
Esto creará un archivo con el contenido que se muestra a continuación.
-- 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');
Para volcar varias tablas, nómbrelas todas seguidas del argumento del nombre de la base de datos. Para volcar una base de datos completa, no nombre ninguna tabla después de la base de datos como se muestra en el siguiente bloque de código.
$ mysqldump -u root -p TUTORIALS > database_dump.txt
password ******
Para realizar una copia de seguridad de todas las bases de datos disponibles en su host, utilice el siguiente código.
$ mysqldump -u root -p --all-databases > database_dump.txt
password ******
La opción --all-database está disponible en la versión MySQL 3.23.12. Este método se puede utilizar para implementar una estrategia de copia de seguridad de la base de datos.
Copiar tablas o bases de datos a otro host
Si desea copiar tablas o bases de datos de un servidor MySQL a otro, utilice el mysqldump con el nombre de la base de datos y el nombre de la tabla.
Ejecute el siguiente comando en el host de origen. Esto volcará la base de datos completa endump.txt archivo.
$ mysqldump -u root -p database_name table_name > dump.txt
password *****
Puede copiar la base de datos completa sin usar un nombre de tabla en particular como se explicó anteriormente.
Ahora, archivo ftp dump.txt en otro host y use el siguiente comando. Antes de ejecutar este comando, asegúrese de haber creado database_name en el servidor de destino.
$ mysql -u root -p database_name < dump.txt
password *****
Otra forma de lograr esto sin usar un archivo intermediario es enviar la salida de mysqldump directamente a través de la red al servidor MySQL remoto. Si puede conectarse a ambos servidores desde el host donde reside la base de datos de origen, use el siguiente comando (asegúrese de tener acceso en ambos servidores).
$ mysqldump -u root -p database_name \
| mysql -h other-host.com database_name
En mysqldump, la mitad del comando se conecta al servidor local y escribe la salida del volcado en la tubería. La mitad restante del comando se conecta al servidor MySQL remoto en other-host.com. Lee la tubería para la entrada y envía cada declaración al servidor other-host.com.