Importar o exportar tablas grandes en MySQL

Si trabajando con tablas desde PhpMyAdmin nos muesta el mesaje

No se recibieron datos para importar. O no se envió el nombre del archivo o el tamaño del archivo excedió el máximo permitido por su configuración PHP.

Lo más secillo es importar esa tabla desde terminal o consola. Usando pj. la aplicación Putty, nos conectamos a nuestro sevidor web. Antes habrá que subir desde un cliente FTP, pj. Filezilla, el fichero .sql (o .csv) al servidor web, a un directorio accesible desde terminal pj. /home/nombre_usuario.

Desde la ventana de terminal teclear:

mysql –u usuario_mysql nombre_bbdd < ruta_y_nombre_del_fichero_importación.sql

Si por el contrario queremos exportar una base de datos ya existente, deberemos introducir el siguiente comando en la consola:

mysqldump –u usuario_mysql -p nombre_bbdd > fichero_exportación.sql

Ejemplos desde la shell de MySQL

  • Para hacer una copia de seguridad de una base de datos completa:
shell> mysqldump db_name > backup-file.sql
  • Para cargar el archivo de volcado de nuevo en el servidor:
shell> mysql db_name < backup-file.sql
  • Otra forma de recargar el archivo de volcado:
shell> mysql -e "source /path-to-backup/backup-file.sql " db_name
  • mysqldump también es muy útil para completar las bases de datos copiando datos de un servidor MySQL a otro:
shell> mysqldump --opt db_name | mysql --host= remote_host -C db_name
  • Se puede volcar varias bases de datos con un solo comando:
shell> mysqldump --databases db_name1 [ db_name2 ...] > my_databases.sql
  • Para volcar todas las bases de datos, utilizar la opción –all-database:
shell> mysqldump --all-databases > all_databases.sql
  • Para tablas InnoDB, mysqldump proporciona una manera de hacer una copia de seguridad en línea:
shell> mysqldump --all-databases --master-data --single-transaction > all_databases.sql

En las copias de seguridad se sugiere el uso de bloqueo de lectura global sobre todas las tablas (utilizando FLUSH TABLES WITH READ LOCK).