Importar datos de MySQL de latin1 a UTF8

Hoy me he topado con un pequeño incoveniente al intentar importar una base de datos que estaba en un equipo con MySQL 12.21, y la quería copiar a un equipo que tenía MySQL 14.12.
El problema residía en que la base de datos origen tenía un tipo de carácteres distintos (latin1) a la base de datos destino (UTF8).

La solución fue la siguiente:

mysql -uusername -p dbname --default-character-set=latin1 < bbdd_original.sql

Así conseguí que se exportaran los datos sin problemas de codificación de los carácteres.

Enlace

Copiar y restaurar base de datos de MySQL

Lo primero que hay que hacer es hacer un backup de la base de datos, para ello usaremos el comando mysqldump.

$ mysqldump --add-drop-table -u root -p dbname >~/db_name.sql

donde…

root, es el usuario de la base de datos.

dbname, es el nombre de la base de datos que queremos usar.

y ~/db_name.sql es la ruta del fichero donde se guardará el backup.

Una vez hecho esto, podemos restaurar la base de datos, por ejemplo, en otra máquina. Para ello primero arrancamos mysql:

$ mysql -u root -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or g.
Your MySQL connection id is 5
Server version: 5.0.45-Debian_1ubuntu3.1-log Debian etch distribution
Type 'help;' or 'h' for help. Type 'c' to clear the buffer.
mysql> create database dbname_copy
mysql> use dbname_copy

recuerda que «mysql>» es el prompt que interpreta los comando de mysql..

ahora para restaurarla usamos el siguiente código:

mysql> source  ~/db_name.sql

Y ya estaría copiada. Estos últimos pasos también se podrían haber hecho de la siguiente forma:

mysql -u root -p dbname < ~/db_name.sql

Sería muy buena idea que se hiciera un backup diario de la BBDD (Con algún cron, por ejemplo) de modo que podamos restaurar la BBDD sin perder mucho margen de datos, y teniéndo el backup automático.

Fuente: inocuo.net y ivorde.ro