English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Exportar datos MySQL

En MySQL puedes usarSELECT...INTO OUTFILELa declaración para exportar datos de manera simple a un archivo de texto.

Utilizando la declaración SELECT ... INTO OUTFILE para exportar datos

En el siguiente ejemplo, exportaremos los datos de la tabla w3La exportación de codebox_tbl se realiza a /tmp/w3El archivo codebox.txt contiene:

mysql> SELECT * FROM w3codebox_tbl 
    -> INTO OUTFILE '"'/tmp/w3codebox.txt"';

Puedes configurar el formato específico de salida de datos mediante opciones de comando, a continuación se muestra un ejemplo de exportación en formato CSV:

mysql> SELECT * FROM passwd INTO OUTFILE '"'/tmp/w3codebox.txt"
    -> FIELDS TERMINATED BY ',' ENCLOSED BY '"'
    -> LINES TERMINATED BY '\r\n';

En el siguiente ejemplo, se crea un archivo con valores separados por comas. Este formato puede ser utilizado por muchos programas.

SELECT a, b, a+b INTO OUTFILE '"'/tmp/result.text'
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\n'
FROM test_table;

La declaración SELECT ... INTO OUTFILE tiene las siguientes propiedades:

  • LOAD DATA INFILE es la operación inversa de SELECT ... INTO OUTFILE, en la sintaxis SELECT. Para escribir los datos de una base de datos en un archivo, se utiliza SELECT ... INTO OUTFILE, y para leer el archivo de vuelta en la base de datos, se utiliza LOAD DATA INFILE.

  • La forma SELECT...INTO OUTFILE 'file_name' permite escribir las filas seleccionadas en un archivo. Este archivo se crea en el host del servidor, por lo que debes tener permisos de FILE para usar esta sintaxis.

  • La salida no puede ser un archivo existente. Se previene la manipulación de los datos del archivo.

  • Necesitas tener una cuenta de inicio de sesión en el servidor para recuperar el archivo. De lo contrario, SELECT ... INTO OUTFILE no tendrá ningún efecto.

  • En UNIX, el archivo se crea como legible después de su creación, y los permisos son propiedad del servidor MySQL. Esto significa que aunque puedes leer el archivo, es posible que no puedas eliminarlo.

Exportar la tabla como datos originales

mysqldump es un programa útil de mysql para transferir bases de datos. Produce principalmente un script SQL que contiene los comandos necesarios para recrear la base de datos desde cero, como CREATE TABLE, INSERT, etc.

Para exportar datos utilizando mysqldump se necesita usar  --opción tab para especificar el directorio del archivo de exportación, este objetivo debe ser escribible.

El siguiente ejemplo exportará la tabla w3codebox_tbl exportado /En el directorio tmp:

$ mysqldump -u root -p --no-create-info \
            --tab=/tmp w3codebox w3codebox_tbl
contraseña ******

Exportar datos en formato SQL

Exportar datos en formato SQL a un archivo específico, como se muestra a continuación:

$ mysqldump -u root -p w3codebox w3codebox_tbl > respaldo.txt
contraseña ******

El contenido del archivo creado por el comando anterior es el siguiente:

-- Respaldo MySQL 8.23
--
-- Anfitrión: localhost Database: w3codebox
---------------------------------------------------------
-- Versión del servidor       3.23.58
--
-- Estructura de la tabla para la tabla `w3codebox_tbl`
--
CREAR TABLE w3codebox_tbl (
  w3codebox_id int(11) NO NULL auto_increment,
  w3codebox_title varchar(100) NO NULL por defecto '',
  w3codebox_author varchar(40) NO NULL por defecto '',
  fecha_de_presentacion date por defecto NULL,
  CLAVE PRIMARIA (w3codebox_id),
  CLAVE ÚNICA AUTOR_INDEX (w3codebox_author)
) TYPE=MyISAM;
--
-- Desagregando datos para la tabla `w3codebox_tbl`
--
INSERT INTO w3codebox_tbl 
       VALORES (1Aprender PHP2007-05-24');
INSERT INTO w3codebox_tbl 
       VALORES (2Aprender MySQL2007-05-24');
INSERT INTO w3codebox_tbl 
       VALORES (3JAVA Tutorial2007-05-06');

Si necesita exportar los datos de toda la base de datos, puede usar el siguiente comando:

$ mysqldump -u root -p w3codebox > base_de_dump.txt
contraseña ******

Si necesita hacer una copia de seguridad de todas las bases de datos, puede usar el siguiente comando:

$ mysqldump -u root -p --todo-bases de datos > base_de_dump.txt
contraseña ******

--todo-La opción databases en MySQL 3.23.12 y versiones posteriores añadidas.

Este método se puede usar para implementar la estrategia de respaldo de la base de datos.

Copiar tabla y base de datos a otro host

Si necesita copiar los datos a otro servidor MySQL, puede especificar el nombre de la base de datos y la tabla en el comando mysqldump.

Ejecute los siguientes comandos en el host de origen para respaldar los datos en el archivo dump.txt:

$ mysqldump -u root -p database_name table_name > dump.txt
contraseña *****

No es necesario especificar el nombre de la tabla específica para respaldar la base de datos completa.

Si necesita importar la copia de seguridad de la base de datos al servidor MySQL, puede usar los siguientes comandos, debe confirmar que la base de datos ya ha sido creada:

$ mysql -u root -p database_name < dump.txt
contraseña *****

También puede usar los siguientes comandos para importar directamente los datos exportados al servidor remoto, pero asegúrese de que los dos servidores estén conectados y puedan accederse mutuamente:

$ mysqldump -u root -p database_name \
       | mysql -h other-host.com database_name

Se utilizó el tubo en los comandos anteriores para importar los datos exportados al host remoto especificado.