Preciso fazer um despejo de um banco de dados contendo 50 tabelas ímpares, das quais desejo excluir cerca de 15 ímpares que tenham prefixo exam_
Eu tentei mysqldump --ignore-table=dbname.exam_*
e até tentei --ignore-table=dbname.exam_%
Não funcionou como o esperado. Eu tive que usar --ignore-table
várias vezes.
Edit: Eu vi alguns scripts de shell que listam tables not like tablename_%
e passam para mysqldump
.
No entanto, gostaria de saber se existe uma opção no mysqldump ou mysql, como tal, para fazer o mesmo sem ter que criar um script.
Editar-adicionar: Eventualmente, foi usado um script para despejar o banco de dados excluindo tabelas, usando ignore-table=
várias vezes.
TABLES=`mysql --skip-column-names [DB-NAME] -e 'show tables' | grep -v 'exam_'`
mysqldump [DB-NAME] $TABLES > mysqldump.sql
Respostas:
Não, não há opção como essa no
mysqldump
comando, como dizem os documentos :fonte
mysqldump --all-databases
pouco para ver se ele erros fora, ou apenas pula para a próxima DDB ..Você pode obter os nomes de tabela que deseja do mysql e usá-los para criar seus parâmetros de despejo do mysql.
No exemplo abaixo, basta substituir "someprefix" pelo seu prefixo (por exemplo, "exam_").
A
SHOW TABLES
consulta pode ser alterada para encontrar outros conjuntos de tabelas. Ou você pode usar uma consulta naINFORMATION_SCHEMA
tabela para usar ainda mais critérios.Isso foi criado com a ajuda desta resposta sobre como obter "todas as tabelas com exclusão no bash": https://stackoverflow.com/a/9232076/631764
e esta resposta sobre ignorar tabelas com algumas partes usadas: https://stackoverflow.com/a/425172/631764
fonte
Eu acho que usar o
information_schema
é um bom caminho a seguir.fonte