>데이터 베이스 >MySQL 튜토리얼 >테이블 이름을 미리 알지 못한 채 MySQL 테이블을 별도의 파일에 자동으로 덤프하려면 어떻게 해야 합니까?

테이블 이름을 미리 알지 못한 채 MySQL 테이블을 별도의 파일에 자동으로 덤프하려면 어떻게 해야 합니까?

Linda Hamilton
Linda Hamilton원래의
2024-10-30 15:19:03280검색

How can I automatically dump MySQL tables into separate files without knowing table names beforehand?

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

Mysqldump는 MySQL 테이블을 개별 파일로 덤프하는 편리한 방법을 제공합니다. 그러나 테이블 이름을 미리 아는 것은 제한 사항입니다. 이 문제를 해결하기 위해 각 테이블을 자동으로 덤프하는 대체 접근 방식이 있습니다.

스크립트 기반 접근 방식:

script-fu를 활용하면 데이터베이스를 쿼리하여 검색할 수 있습니다. 모든 테이블 이름을 지정하고 덤프를 수행하는 스크립트를 만듭니다. MySQL 데이터베이스에 액세스할 수 있는 스크립트 언어는 다음과 같습니다.

  • mysql-connector 또는 sqlalchemy가 포함된 Python
  • PDO 또는 mysqli가 포함된 PHP
  • mysql2가 포함된 Ruby
  • JDBC 또는 JPA가 포함된 Java

자체 포함 Bash 스크립트:

제공된 Bash 스크립트는 프로세스를 더욱 간소화하여 추가 스크립팅이 필요하지 않습니다. 지식:

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

# dump-tables-mysql.sh
[ $# -lt 3 ] && echo "Usage:  <DB_HOST> <DB_USER> <DB_NAME> [<DIR>]" && exit 1

DB_host=
DB_user=
DB=
DIR=

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

read -sp "DB password: " 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>

이 스크립트는 데이터베이스 비밀번호를 묻는 메시지를 표시하고 각 테이블의 데이터를 별도의 압축 SQL 파일에 덤프한 다음 지정된 디렉터리에 저장합니다. 테이블 이름 검색부터 덤프 파일 생성까지 필요한 모든 단계를 처리합니다.

위 내용은 테이블 이름을 미리 알지 못한 채 MySQL 테이블을 별도의 파일에 자동으로 덤프하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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