Saltar al contenido

¿Cómo tomar mysqldump con UTF8?

Nuestros mejores programadores han agotado sus provisiones de café, en su búsqueda día y noche por la solución, hasta que Andrea encontró el resultado en Bitbucket y hoy la comparte aquí.

Solución:

Hola intenta lo siguiente.

mysqldump -u [username] –p[password] --default-character-set=utf8 -N --routines --skip-triggers --databases [database_name] > [dump_file.sql]

--default-character-set=utf8 es la opción que buscas la que se puede usar junto con estas otras:

mysqldump --events 
 --routines 
 --triggers 
 --add-drop-database 
 --compress 
 --hex-blob 
 --opt 
 --skip-comments  
 --single-transaction 
 --skip-set-charset 
 --default-character-set=utf8 
 --databases dbname > my.dump

Además, verifique el --hex-blob ayuda a volcar cadenas binarias en formato hexadecimal, por lo que puedo garantizar (ser más portátil) que la importación funcione.

los --databases hace que todos los nombres en la línea de comandos se traten como nombres de base de datos. Sin esta opción, mysqldump trata el primer nombre como un nombre de base de datos y los siguientes como nombres de tabla.

Con --all-databases o --databases, mysqldump escribe CREATE DATABASE y USE declaraciones antes de la salida de volcado para cada base de datos. Esto asegura que cuando se vuelve a cargar el archivo de volcado, crea cada base de datos si no existe y la convierte en la base de datos predeterminada para que los contenidos de la base de datos se carguen en la misma base de datos de la que provienen. Si desea que el archivo de volcado fuerce una eliminación de cada base de datos antes de volver a crearla, utilice también la opción –add-drop-database. En este caso, mysqldump escribe un DROP DATABASE declaración que precede a cada CREATE DATABASE declaración.

Esto ayuda a restaurar usando:

# mysql < dump.sql

En lugar de:

# mysql dbname < dump.sql 

Tuve el problema de que, incluso con las banderas utf-8 aplicadas al crear el volcado, no pude evitar que los caracteres rotos importaran un volcado que se creó a partir de una base de datos con muchas columnas de texto usando latin1. Algunas búsquedas en Google y especialmente este sitio me ayudaron a finalmente resolverlo.

  1. mysqldump con --skip-set-charset --default-character-set=latin1 banderas, para evitar el intento de reconversión de MySQL y establecer un conjunto de caracteres.

  2. arregla el volcado reemplazando las cadenas del juego de caracteres usando sed en la terminal

    sed -i 's/latin1_swedish_ci/utf8mb4/g' mysqlfile.sql
    sed -i 's/latin1/utf8mb4/g' mysqlfile.sql

para asegurarse de no perderse nada, puede hacer grep -i 'latin1' mysqlfile.sql antes del paso 2 - y luego generar más órdenes sed. Introducción a sed aquí

  1. crear una base de datos limpia

    CREAR BASE DE DATOS mydatabase CONJUNTO DE CARACTERES utf8mb4 COLLATE utf8mb4_0900_ai_ci;

  2. aplicar volcado fijo

Reseñas y calificaciones del tutorial

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)


Tags : /

Utiliza Nuestro Buscador

Deja una respuesta

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