mysql에서 원하는 테이블 이름을 얻은 다음이를 사용하여 mysql 덤프 매개 변수를 빌드 할 수 있습니다.
아래 예에서 "someprefix"를 접두사 (예 : "exam_")로 바꾸십시오.
SHOW TABLES
쿼리는 테이블의 다른 세트를 찾아 변경 될 수 있습니다. 또는 INFORMATION_SCHEMA
테이블에 대해 쿼리 를 사용하여 더 많은 기준을 사용할 수 있습니다.
#/bin/bash
#this could be improved but it works
read -p "Mysql username and password" user pass
#specify your database, e.g. "mydb"
DB="mydb"
SQL_STRING='SHOW TABLES LIKE "someprefix%";'
DBS=$(echo $SQL_STRING | mysql -u $user -p$pass -Bs --database=$DB )
#next two lines untested, but intended to add a second excluded table prefix
#ANOTHER_SQL_STRING='SHOW TABLES LIKE "otherprefix%";'
#DBS="$DBS""\n"$(echo $ANOTHER_SQL_STRING | mysql -u $user -p$pass -Bs --database=$DB )
#-B is for batch - tab-separated columns, newlines between rows
#-s is for silent - produce less output
#both result in escaping special characters
#but the following might not work if you have special characters in your table names
IFS=$'\n' read -r -a TABLES <<< $DBS
IGNORE="--ignore_table="$DB"."
IGNORE_TABLES=""
for table in $TABLES; do
IGNORE_TABLES=$IGNORE_TABLES" --ignore_table="$DB"."$table
done
#Now you have a string in $IGNORE_TABLES like this: "--ignore_table=someprefix1 --ignore_table=someprefix2 ..."
mysqldump $DB --routines -u $user -p$pass $IGNORE_TABLES > specialdump.sql
이것은 "bash를 제외한 모든 테이블"을 얻는 것에 대한이 답변의 도움으로 작성되었습니다. https : //.com/a/9232076/631764
bash를 사용하여 테이블을 건너 뛰는 것에 대한이 답변 : https : //.com/a/425172/631764