script de despejo de banco de dados mysql que adiciona fuctionality para pular banco de dados despejado

1

Estou usando o seguinte script para despejar meu banco de dados. funciona muito bem. Eu quero adicionar funcionalidade que primeiro verifica se uma tabela de banco de dados já está despejada ou não, se existe um despejo, então ele deve ser ignorado e passar para a próxima tabela.

DB_host=127.0.0.1
DB_user=root
DB=mydb
DB_pass=mydbpassword
DIR=/

[ -n "$DIR" ] || DIR=.
test -d $DIR || mkdir -p $DIR

echo "Dumping tables into separate SQL command files for database '$DB' into dir=$DIR"

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: $t"
    mysqldump -h $DB_host -u $DB_user -p$DB_pass $DB $t  > $DIR/$t.sql
    (( tbl_count++ ))
done

echo "$tbl_count tables dumped from database '$DB' into dir=$DIR"
    
por Ketan Patel 17.08.2013 / 08:27

1 resposta

0

Altere este bloco do código:

echo "DUMPING TABLE: $t"
mysqldump -h $DB_host -u $DB_user -p$DB_pass $DB $t  > $DIR/$t.sql
(( tbl_count++ ))

Para isso:

echo "DUMPING TABLE: $t"
if [ -e "$DIR/$t.sql" ]; then
  echo "TABLE $DIR/$t.sql exists, skipping..."
else
  mysqldump -h $DB_host -u $DB_user -p$DB_pass $DB $t  > $DIR/$t.sql
fi
(( tbl_count++ ))
    
por 17.08.2013 / 21:34

Tags