2012-09-13 4 views

답변

0

웹에서 검색 후, 나는 여기에 모든 테이블을 드롭 쉘 스크립트를 발견 : 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 

편집 : 나는 스크립트를 개선 옵션 매개 변수를 허용하는 호스트, 포트 및도 접두사와 접미사처럼 전망이 삭제됩니다 무엇을 필터링 할 수 있습니다.

2

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 
관련 문제