내 데이터베이스에 많은 의견이 있었으며 하나씩 데이터베이스를 삭제할 수 없었습니다.MYSQL 데이터베이스에서 모든 뷰를 삭제하려면 어떻게해야합니까?
데이터베이스를 선택하는보기에서 테이블의 구조 변경 내용을 새로 고치지 않기 때문에이 목록을 모두 삭제하고 싶습니다.
내 데이터베이스에 많은 의견이 있었으며 하나씩 데이터베이스를 삭제할 수 없었습니다.MYSQL 데이터베이스에서 모든 뷰를 삭제하려면 어떻게해야합니까?
데이터베이스를 선택하는보기에서 테이블의 구조 변경 내용을 새로 고치지 않기 때문에이 목록을 모두 삭제하고 싶습니다.
웹에서 검색 후, 나는 여기에 모든 테이블을 드롭 쉘 스크립트를 발견 : http://www.cyberciti.biz/faq/how-do-i-empty-mysql-database/
가 그럼, 데이터베이스의 모든 뷰를 떨어 해당 스크립트를 변경했습니다. 이 솔루션은 단지 유닉스 계열 시스템을 사용하는 사람들을 위해 작동 할
#!/bin/bash
PREFIX=""
SUFFIX=""
HOST="localhost"
PORT="3306"
while getopts p:s:h:P: OPCAO; do
case "${OPCAO}" in
p) PREFIX="${OPTARG}" ;;
s) SUFFIX="${OPTARG}" ;;
h) HOST="${OPTARG}" ;;
P) PORT="${OPTARG}" ;;
esac
done
shift $((OPTIND-1))
MUSER="$1"
MPASS="$2"
MDB="$3"
# Detect paths
MYSQL=$(which mysql)
AWK=$(which awk)
GREP=$(which grep)
if [ $# -eq 0 ]
then
echo "Usage: $0 [-h Host] [-P Port] [-p Prefix-View-Name] [-s Suffix-View-Name] {MySQL-User-Name} {MySQL-User-Password} {MySQL-Database-Name}"
echo "Drops all views from a MySQL"
exit 1
fi
TABLES=$($MYSQL -h $HOST -P $PORT -u $MUSER -p$MPASS $MDB -e "SELECT table_name FROM information_schema.views WHERE table_schema = '$MDB' AND table_name LIKE '$PREFIX%$SUFFIX';" | $AWK '{ print $1}')
for t in $TABLES
do
echo "Deleting $t view from $MDB database..."
$MYSQL -h $HOST -P $PORT -u $MUSER -p$MPASS $MDB -e "drop view $t"
done
: 이 최종 결과입니다.
스크립트를 호출하려면, 내가 사용 :./script.sh [-h host] [-P port] [-p prefixViewName] [-s suffixViewName] username password databaseName
편집 : 나는 스크립트를 개선 옵션 매개 변수를 허용하는 호스트, 포트 및도 접두사와 접미사처럼 전망이 삭제됩니다 무엇을 필터링 할 수 있습니다.
MySQL 클라이언트에서이 작업을 수행하려면 information_schema를 사용하여 DDL 문을 동적으로 생성하고 SQL 스크립트로 덤프 한 다음 해당 스크립트를 실행할 수 있습니다.
예 :
select concat('drop view ',table_schema,'.',table_name,';') as ddl
into outfile '/tmp/drop_all_views.sql'
from information_schema.views
where table_schema = 'your_schema';
\. /tmp/drop_all_views.sql