Пропустить определенные таблицы с mysqldump

Использование Juste:

$headers = apache_request_headers();
$token = $headers['token'];
513
задан Zac 8 January 2009 в 17:30
поделиться

2 ответа

Можно использовать - опция игнорировать-таблицы . Таким образом, Вы могли сделать

mysqldump -u USERNAME -pPASSWORD DATABASE --ignore-table=DATABASE.table1 > database.sql

нет никакого пробела после -p (это не опечатка).

, Если Вы хотите проигнорировать несколько таблиц, можно использовать простой сценарий как это

#!/bin/bash
PASSWORD=XXXXXX
HOST=XXXXXX
USER=XXXXXX
DATABASE=databasename
DB_FILE=dump.sql
EXCLUDED_TABLES=(
table1
table2
table3
table4
tableN   
)

IGNORED_TABLES_STRING=''
for TABLE in "${EXCLUDED_TABLES[@]}"
do :
   IGNORED_TABLES_STRING+=" --ignore-table=${DATABASE}.${TABLE}"
done

echo "Dump structure"
mysqldump --host=${HOST} --user=${USER} --password=${PASSWORD} --single-transaction --no-data --routines ${DATABASE} > ${DB_FILE}

echo "Dump content"
mysqldump --host=${HOST} --user=${USER} --password=${PASSWORD} ${DATABASE} --no-create-info --skip-triggers ${IGNORED_TABLES_STRING} >> ${DB_FILE}
860
ответ дан 8 revs, 7 users 62% 8 January 2009 в 17:30
поделиться
  • 1
    Да, пример кода ценится. Все еще I' m задающийся вопросом, если там isn' t способ генерировать весь этот код, управляемый рядом аннотируемых объектов Объекта. – Jan 5 July 2010 в 16:31

Ради полноты вот сценарий, который на самом деле мог быть остротой для получения резервного копирования от базы данных, исключая (игнорирование) всех представлений. Имя дб взято, чтобы быть сотрудниками:

ignore=$(mysql --login-path=root1 INFORMATION_SCHEMA \
    --skip-column-names --batch \
    -e "select 
          group_concat(
            concat('--ignore-table=', table_schema, '.', table_name) SEPARATOR ' '
          ) 
        from tables 
        where table_type = 'VIEW' and table_schema = 'employees'")

mysqldump --login-path=root1 --column-statistics=0 --no-data employees $ignore > "./backups/som_file.sql"   

можно обновить логику запроса. В общем использовании group_concat и concat можно генерировать почти любую желаемую строку или окружить команду.

0
ответ дан 22 November 2019 в 22:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: