Para excluir solo algunas tablas, puede usar --ignore-table = Table1 --ignore-table = Table2 --ignore-table = Table3 etc.
codewaggle
@codecowboy, puedes cambiar SQL="${SQL} AND table_name NOT IN ('t1','t2','t3')"a SQL="${SQL} AND table_name NOT LIKE 'foo\_%'". Lo acabo de probar y funciona. Puede cambiar la condición a '% foo%' para obtener todas las tablas que contengan 'foo' en cualquier lugar de sus nombres (incluyendo 'comida', 'tonto', etc.).
Buttle Butkus
1
¿No es el enfoque para excluir tablas aquí redundante y excesivo dada la existencia del --ignore-tableargumento? Y si es así, ¿no sería mejor eliminar el guión de la respuesta y recomendarlo --ignore-table?
Mark Amery
@codewaggle Eso da el error a Illegal use of option --ignore-table=<database>.<table>menos que especifique la tabla como schemaname.tablename.
WAF
cosas interesantes, ¿alguna razón por la que la variable SQL no es de varias líneas?
Cuando tiene más de unas pocas tablas, es mucho mejor ejecutar algo como esto:
mysql databasename -u [user]-p[password]-e 'show tables like "table_name_%"'| grep -v Tables_in | xargs mysqldump [databasename]-u [root]-p [password]>[target_file]
O algo así:
mysqldump -u [user]-p[password] databasename `echo "show tables like 'table_name_%';"| mysql -u[user]-p[password] databasename | sed '/Tables_in/d'`>[target_file]
Recuerde que esos comandos deben escribirse solo en una línea.
Respuestas:
Si está volcando las tablas t1, t2 y t3 de mydb
Si tiene un montón de tablas en mydb y desea volcar todo excepto t1, t2 y t3, haga lo siguiente:
Darle una oportunidad !!!
ACTUALIZACIÓN 2014-03-06 10:15 EST
@RoryDonohue me señaló que la función GROUP_CONCAT necesita tener su longitud máxima extendida. Agregué la variable de sesión group_concat_max_len a mi respuesta con una longitud máxima de 10K. Gracias, @RoryDonohue.
fuente
SQL="${SQL} AND table_name NOT IN ('t1','t2','t3')"
aSQL="${SQL} AND table_name NOT LIKE 'foo\_%'"
. Lo acabo de probar y funciona. Puede cambiar la condición a '% foo%' para obtener todas las tablas que contengan 'foo' en cualquier lugar de sus nombres (incluyendo 'comida', 'tonto', etc.).--ignore-table
argumento? Y si es así, ¿no sería mejor eliminar el guión de la respuesta y recomendarlo--ignore-table
?Illegal use of option --ignore-table=<database>.<table>
menos que especifique la tabla comoschemaname.tablename
.Una nota para ampliar la respuesta de RolandoMySQLDBA .
El guión que incluyó es un gran enfoque para incluir (
and table_name in
) o excluir (and table_name NOT in
) una lista de tablas.Si solo necesita excluir una o dos tablas, puede excluirlas individualmente con la
--ignore-table
opción:fuente
Cuando tiene más de unas pocas tablas, es mucho mejor ejecutar algo como esto:
O algo así:
Recuerde que esos comandos deben escribirse solo en una línea.
fuente
Puedes hacerlo simplemente usando el siguiente comando:
fuente