Despejar tabelas MySQL automaticamente para arquivos separados
O utilitário mysqldump integrado permite despejos seletivos de tabelas, mas requer nomes de tabelas pré-especificados . Para uma abordagem dinâmica que lide com novas adições de tabelas, é necessária uma solução automatizada.
Uma dessas soluções é um script de shell que consulta dinamicamente o banco de dados em busca de todos os nomes de tabelas e despeja cada tabela em um arquivo compactado separado. Isso elimina a necessidade de manutenção manual do nome da tabela no script de despejo.
Aqui está um exemplo de script que atinge essa funcionalidade:
#!/bin/bash
# Descr: Dump MySQL table data into separate SQL files for a specified database.
# Usage: Run without args for usage info.
# Author: @Trutane
[ $# -lt 3 ] && echo "Usage: $(basename $0) <DB_HOST> <DB_USER> <DB_NAME> [<DIR>]" && exit 1
DB_host=$1
DB_user=$2
DB=$3
DIR=${4:-.}
[ -d $DIR ] || mkdir -p $DIR
echo -n "DB password: "
read -s DB_pass
tbl_count=0
for t in $(mysql -NBA -h $DB_host -u $DB_user -p$DB_pass -D $DB -e 'show tables')
do
echo "DUMPING TABLE: $DB.$t"
mysqldump -h $DB_host -u $DB_user -p$DB_pass $DB $t | gzip > "$DIR/$DB.$t.sql.gz"
tbl_count=$(( tbl_count 1 ))
done
echo "$tbl_count tables dumped from database '$DB' into dir=$DIR"
Este script solicita a senha do banco de dados, consulta o banco de dados especificado em busca de nomes de tabelas e despeja os dados de cada tabela como comandos SQL em arquivos individuais arquivos compactados no diretório especificado (ou no diretório de trabalho atual por padrão).
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3