Saltar al contenido

MySQL importa la base de datos pero ignora la tabla específica

Siéntete en la libertad de compartir nuestra web y códigos con tus amigos, danos de tu ayuda para ampliar nuestra comunidad.

Solución:

¡La respuesta aceptada por RandomSeed podría llevar mucho tiempo! Importar la tabla (solo para soltarla más tarde) podría ser un desperdicio dependiendo del tamaño.

Para un archivo creado usando

mysqldump -u user -ppasswd --opt --routines DBname > DBdump.sql

Actualmente obtengo un archivo de aproximadamente 7 GB, 6 GB de los cuales son datos para una tabla de registro que no “necesito” estar allí; recargar este archivo toma un par de horas. Si necesito volver a cargar (para fines de desarrollo, o si alguna vez se requiere para una recuperación en vivo), hojeo el archivo de la siguiente manera:

sed '/INSERT INTO `TABLE_TO_SKIP`/d' DBdump.sql > reduced.sql

Y recargar con:

mysql -u user -ppasswd DBname < reduced.sql

Esto me da una base de datos completa, con la tabla "no deseada" creada pero vacía. Si realmente no quiere las tablas en absoluto, simplemente suelte las tablas vacías después de que finalice la carga.

Para varias tablas, podría hacer algo como esto:

sed '/INSERT INTO `TABLE1_TO_SKIP`/d' DBdump.sql | 
sed '/INSERT INTO `TABLE2_TO_SKIP`/d' | 
sed '/INSERT INTO `TABLE3_TO_SKIP`/d' > reduced.sql

Hay un 'gotcha': tenga cuidado con los procedimientos en su volcado que pueden contener "INSERT INTO TABLE_TO_SKIP".

mysqlimport no es la herramienta adecuada para importar sentencias SQL. Esta herramienta está destinada a importar archivos de texto con formato como CSV. Lo que quiere hacer es alimentar su volcado de sql directamente al mysql cliente con un comando como este:

bash > mysql -D your_database < your_sql_dump.sql

Ninguno de los dos mysql ni mysqlimport proporcione la función que necesita. Su mejor oportunidad sería importar todo el volcado y luego eliminar las tablas que no desea.

Si tiene acceso al servidor de donde proviene el volcado, puede crear un nuevo volcado con mysqldump --ignore-table=database.table_you_dont_want1 --ignore-table=database.table_you_dont_want2 ....


Consulte esta respuesta para obtener una solución para omitir la importación de alguna tabla

Para cualquiera que trabaje con archivos .sql.gz; Encontré que la siguiente solución es muy útil. Nuestra base de datos tenía más de 25 GB y tuve que eliminar las tablas de registro.

gzip -cd "./mydb.sql.gz" | sed -r '/INSERT INTO `(log_table_1|log_table_2|log_table_3|log_table_4)`/d' | gzip > "./mydb2.sql.gz"

Gracias a la respuesta de Don y el comentario de Xosofox y esta publicación relacionada: use zcat y sed o awk para editar el archivo de texto comprimido .gz

Si guardas algún reparo y capacidad de aclarar nuestro escrito te recomendamos ejecutar una referencia y con gusto lo ojearemos.

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



Utiliza Nuestro Buscador

Deja una respuesta

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