업로드 크기 제한을 극복하기 위해 대용량 MySQL 덤프 파일을 작은 파일로 분할하려면 어떻게 해야 합니까?

DDD
풀어 주다: 2024-11-11 20:23:03
원래의
477명이 탐색했습니다.

How do I split a large MySQL dump file into smaller files to overcome upload size limits?

Mysqldump 출력을 용량이 제한된 원격 서버에 업로드하기 위해 더 작은 파일로 분할

대용량 데이터를 하나의 MySQL 데이터베이스에서 다른 MySQL 데이터베이스로 전송해야 하는 필요성 종종 발생하지만 제한된 파일 업로드 크기와 같은 제한으로 인해 문제가 발생할 수 있습니다. 이는 2MB보다 작은 압축된 .sql 파일만 허용하는 phpMyAdmin을 사용할 때 특히 중요합니다. 다행히도 이 장애물을 극복할 수 있는 솔루션이 있습니다.

이 문제를 해결하려면 mysqldump의 출력을 관리 가능한 덩어리로 꼼꼼하게 조각화하여 더 작은 형식으로 업로드할 수 있습니다. 안타깝게도 원격 서버에서 파일을 다시 연결할 수 없기 때문에 분할(1) 유틸리티를 사용할 수 없습니다.

대체 솔루션: MySQL 덤프 출력 조각화

split(1)에 대한 실용적인 대안은 다음 bash 스크립트에 나와 있습니다. 데이터베이스 덤프 파일을 개별 테이블에 해당하는 개별 .sql 파일로 능숙하게 분할합니다. 스크립트는 파일 분할을 위한 다용도 도구인 csplit을 활용하고 START를 전략적으로 사용하여 테이블 경계를 식별합니다.

#!/bin/bash

# Adjust this to your specific scenario:
START="/-- Table structure for table/"

if [ $# -lt 1 ] || [[  == "--help" ]] || [[  == "-h" ]]; then
  echo "USAGE: extract all tables:"
  echo "  DUMP_FILE"
  echo "extract one table:"
  echo "  DUMP_FILE [TABLE]"
  exit
fi

if [ $# -ge 2 ]; then
  # Extract a specific table 
  csplit -s -ftable  "/-- Table structure for table/" "%-- Table structure for table \`\`%" "/-- Table structure for table/" "%40103 SET TIME_ZONE=@OLD_TIME_ZONE%1"
else
  # Extract all tables
  csplit -s -ftable  "$START" {*}
fi

[ $? -eq 0 ] || exit

mv table00 head

FILE=`ls -1 table* | tail -n 1`
if [ $# -ge 2 ]; then
  # Cut off all other tables
  mv $FILE foot
else
  # Cut off the end of each file
  csplit -b '%d' -s -f$FILE $FILE "/40103 SET TIME_ZONE=@OLD_TIME_ZONE/" {*}
  mv ${FILE}1 foot
fi

for FILE in `ls -1 table*`; do
  NAME=`head -n1 $FILE | cut -d$'\x60' -f2`
  cat head $FILE foot > "$NAME.sql"
done

rm head foot table*
로그인 후 복사

이 솔루션은 덤프 파일을 개별 테이블별 .sql 파일로 꼼꼼하게 분할하여 성공적으로 업로드되도록 합니다. 제한된 파일 용량에서도 원격 서버를 사용할 수 있습니다.

위 내용은 업로드 크기 제한을 극복하기 위해 대용량 MySQL 덤프 파일을 작은 파일로 분할하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿