Importar/exportar datos en MySQL

Introducción

Tenemos una tabla marcas como la siguiente, ¿cómo podemos exportarla?

SELECT * FROM `marcas`

id_marca nombre       url  avatar 
1        Zara         NULL NULL 
2        Woman Secret NULL NULL 
3        New Look     NULL NULL

Soluciones

Exportar con mysqldump

$ mysqldump -ubasedatos -pcontraseña --extended-insert=false --hex-blob nombrebasededatos > volcado.sql

Exportar con SELECT … INTO OUTFILE

Opciones

[FIELDS
[TERMINATED BY '\t']
[[OPTIONALLY] ENCLOSED BY '']
[ESCAPED BY '\\' ]
]
[LINES
[STARTING BY '']
[TERMINATED BY '\n']
]

Ejemplo:

SELECT * INTO OUTFILE '/path/to/result.txt'
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\n'
FROM marcas;

Importar fichero SQL

$ mysql -ubasedatos -pcontraseña nombrebasededatos < volcado.sql

Importar datos con LOAD DATA INFILE

LOAD DATA sirve para tomar cualquier archivo “comma-separated” (separado por comas, aunque no necesariamente son comas) y cargarlo como datos en alguna tabla de MySQL.Un ejemplo para recuperar los datos anteriores:

LOAD DATA LOCAL INFILE '/path/to/result.txt'
INTO TABLE marcas
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n' (id_marca, nombre, url, avatar );

Referencias

  1. https://phenobarbital.wordpress.com/2007/08/03/cargar-datos-en-mysql-con-load-data-infile/
  2. https://dev.mysql.com/doc/refman/5.1/en/load-data.html
  3. https://dev.mysql.com/doc/refman/5.1/en/mysqldump.html
  4. https://dev.mysql.com/doc/refman/5.1/en/select-into.html

5 thoughts on “Importar/exportar datos en MySQL

  1. Quiero utilizar SELECT … INTO OUTFILE, pero no sé como indicar el archivo resultado. Mi código es el siguiente:
    select
    ruc as r, convert(ciuu_5d,unsigned) as ciuu, count(ruc) as veces
    from
    empresas
    where
    convert(ciuu_5d,unsigned) <= 1200
    group by r
    into outfile '/path/to/result.txt'
    fields TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
    LINES TERMINATED BY '\n' ;
    y me sale error 1290.

    • Parece que lo pones bien, si miras la doc “https://dev.mysql.com/doc/refman/8.0/en/select-into.html” y el ejemplo

      SELECT * FROM (VALUES ROW(1,2,3),ROW(4,5,6),ROW(7,8,9)) AS t
      INTO OUTFILE '/tmp/select-values.txt';

      IMPORTANTE! la ruta donde mysql escribe debe poder escribir.

  2. Mi duda es cómo coloco esta línea
    into outfile ‘/path/to/result.txt’
    para que genere el archivo result.txt en mi disco duro.

    • si pones solo result.txt el archivo se guardara en tu ruta donde esta C:\xampp\mysql\data/{bd}/result.txt
      esto es por que estoy usando xamp

  3. si pones solo result.txt el archivo se guardara en tu ruta donde esta C:\xampp\mysql\data/{bd}/result.txt
    esto es por que estoy usando xamp

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos necesarios están marcados *

This site uses Akismet to reduce spam. Learn how your comment data is processed.