"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > MySQL 테이블을 별도의 파일로 자동 덤프하려면 어떻게 해야 합니까?

MySQL 테이블을 별도의 파일로 자동 덤프하려면 어떻게 해야 합니까?

2024년 12월 21일에 게시됨
검색:430

How Can I Automate Dumping MySQL Tables into Separate Files?

MySQL 테이블을 별도의 파일로 자동 덤프

내장된 mysqldump 유틸리티는 선택적 테이블 덤프를 허용하지만 미리 지정된 테이블 이름이 필요합니다. . 새 테이블 추가를 처리하는 동적 접근 방식의 경우 자동화된 솔루션이 필요합니다.

그러한 솔루션 중 하나는 데이터베이스에서 모든 테이블 이름을 동적으로 쿼리하고 각 테이블을 별도의 압축 파일에 덤프하는 셸 스크립트입니다. 이렇게 하면 덤프 스크립트에서 수동으로 테이블 이름을 유지 관리할 필요가 없습니다.

다음은 이 기능을 구현하는 샘플 스크립트입니다.

#!/bin/bash

# Descr: Dump MySQL table data into separate SQL files for a specified database.
# Usage: Run without args for usage info.
# Author: @Trutane

[ $# -lt 3 ] && echo "Usage: $(basename $0) <DB_HOST> <DB_USER> <DB_NAME> [<DIR>]" && exit 1

DB_host=$1
DB_user=$2
DB=$3
DIR=${4:-.}

[ -d $DIR ] || mkdir -p $DIR

echo -n "DB password: "
read -s DB_pass

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

echo "$tbl_count tables dumped from database '$DB' into dir=$DIR"

이 스크립트는 데이터베이스 비밀번호를 묻는 메시지를 표시하고, 지정된 데이터베이스에서 테이블 이름을 쿼리하고, 각 테이블의 데이터를 SQL 명령으로 개별 테이블에 덤프합니다. 지정된 디렉터리(또는 기본적으로 현재 작업 디렉터리) 내의 압축 파일입니다.

최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3