"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como posso automatizar o despejo de tabelas MySQL em arquivos separados?

Como posso automatizar o despejo de tabelas MySQL em arquivos separados?

Publicado em 2024-12-21
Navegar:304

How Can I Automate Dumping MySQL Tables into Separate Files?

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).

Tutorial mais recente Mais>

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