>  기사  >  데이터 베이스  >  테이블 이름을 지정하지 않고 MySQL에서 데이터베이스 테이블 덤프를 자동화하는 방법은 무엇입니까?

테이블 이름을 지정하지 않고 MySQL에서 데이터베이스 테이블 덤프를 자동화하는 방법은 무엇입니까?

Linda Hamilton
Linda Hamilton원래의
2024-10-26 19:33:29691검색

How to Automate Database Table Dumping in MySQL Without Specifying Table Names?

MySQL을 위한 데이터베이스 테이블 덤핑 자동화

MySQL은 테이블 데이터를 개별 파일로 덤프하는 편리한 방법을 제공하며 이는 백업 목적으로 유용할 수 있습니다. . 그러나 시간이 지남에 따라 테이블 수가 변경될 수 있는 동적 환경에서는 dump 명령에 각 테이블 이름을 수동으로 지정하는 것이 실용적이지 않습니다. 이 기사에서는 덤핑 프로세스를 자동화하여 기존의 모든 테이블이 별도의 파일에 캡처되도록 하는 솔루션을 살펴봅니다.

Automagic Dumping

MySQL의 기본 구문에는 테이블에 대한 지식이 필요합니다. 이름을 미리 지정하면 모든 테이블을 자동으로 덤프하는 직접적인 명령이 없습니다. 그러나 명령과 스크립팅의 조합으로 이 작업을 수행할 수 있습니다.

Script-fu 접근 방식

한 가지 접근 방식은 데이터베이스를 쿼리하여 모든 테이블 이름을 검색하는 스크립트를 생성하는 것입니다. . 그런 다음 목록을 반복하고 각 테이블을 개별적으로 덤프할 수 있습니다. Python, Perl, PHP를 포함한 다양한 스크립팅 언어로 MySQL 데이터베이스에 액세스할 수 있습니다.

샘플 Bash 스크립트

다음은 테이블 데이터를 SQL 명령으로 덤프하는 샘플 Bash 스크립트입니다. 별도의 압축 파일로:

<code class="bash">#!/bin/bash

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

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

DB_host=
DB_user=
DB=
DIR=

[ -n "$DIR" ] || DIR=.
test -d $DIR || mkdir -p $DIR

echo -n "DB password: "
read -s DB_pass
echo
echo "Dumping tables into separate SQL command files for database '$DB' into dir=$DIR"

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"</code>

사용 및 이점

이 스크립트는 데이터베이스 비밀번호를 묻는 메시지를 표시하고 지정된 디렉터리 내의 압축 파일에 데이터를 덤프합니다. 새 테이블이 추가될 때 덤프 스크립트를 수동으로 업데이트할 필요가 없습니다. 또한 쉼표로 구분된 데이터베이스 이름 목록을 세 번째 인수로 제공하여 여러 데이터베이스를 덤프하도록 쉽게 확장할 수 있습니다.

위 내용은 테이블 이름을 지정하지 않고 MySQL에서 데이터베이스 테이블 덤프를 자동화하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.