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.

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