다중 볼륨 mysql sql 덤프를 복구하는 중입니다. mysqldump 유틸리티를 사용하여 데이터베이스의 덤프(백업)를 만듭니다. 덤프 란 무엇입니까?

./mysql -u -피 시간 < db_dump-file

2018-12-04T00:00Z

2018-12-11T00:00Z

mysqldump를 사용하여 덤프 파일을 생성하면 데이터베이스 내용을 다시 생성하기 위한 대규모 SQL 스크립트가 포함됩니다. 따라서 MySQL 클라이언트 명령줄을 실행하여 복원합니다.

MySQL -uroot -p

(여기서 root는 MySQL의 관리자 사용자 이름입니다.) 데이터베이스에 연결한 후 데이터베이스를 생성하고 파일을 읽는 명령이 필요합니다.

데이터베이스 new_db 생성; new_db를 사용하십시오; \. 덤프파일.sql

덤프 파일 생성 시 어떤 옵션을 사용했는지에 따라 세부 내용이 변경됩니다.

2018-12-18T00:00Z

다음을 실행하면 됩니다.

mysql -p -u< db_backup.dump

덤프에 여러 데이터베이스가 포함된 경우 데이터베이스 이름을 생략해야 합니다.

mysql -p -u< db_backup.dump

이 명령을 실행하려면 Windows에서 명령 프롬프트를 열고 mysql.exe에 mysql.exe 실행 파일이 포함된 디렉터리로 이동합니다(약간 생각해야 할 수도 있습니다. 이는 mysql을 설치한 방법에 따라 달라집니다. 즉, 독립 실행형) 또는 WAMP와 같은 패키지의 일부로). 이 디렉토리에 있으면 간단히 명령을 입력해야 합니다.

2018-12-25T00:00Z

다음을 실행하는 것만큼 간단해야 합니다.

MySQL -u -피< db_backup.dump

덤프에 단일 데이터베이스가 있는 경우 파일 상단에 다음 줄을 추가해야 할 수도 있습니다.

사용 ;

많은 데이터베이스의 덤프인 경우 use 문이 이미 있는 것입니다.

이 명령을 실행하려면 Windows에서 명령 프롬프트를 열고 mysql.exe에 mysql.exe 실행 파일이 포함된 디렉터리로 이동합니다(약간 생각해야 할 수도 있습니다. 이는 mysql을 설치한 방법에 따라 달라집니다. 즉, 독립 실행형) 또는 WAMP와 같은 패키지의 일부로). 해당 디렉토리에 들어가면 위에서 했던 것처럼 간단히 명령을 입력할 수 있습니다.

2019-01-01T00:00Z

mysqldump에서 생성된 SQL을 복원하는 단일 라이너 명령

MySQL -u -피 E "소스

2019-01-08T00:00Z

Linux에서 생성된 200MB 덤프 파일을 사용하여 mysql 5.5가 설치된 Windows에서 복원하면 더 많은 성공을 거둘 수 있습니다.

소스파일.sql

mysql 명령줄 접근 방식을 사용하는 것보다

mysql< file.sql

일부 2006년 "서버가 나갔습니다" 오류를 일으키는 명령줄 접근 방식(Windows)

이상하게도 (mysql) 설치 중에 생성된 서비스는 존재하지 않는 my.ini 파일을 참조합니다. "큰" 예제 파일을 my.ini에 복사했는데, 권장 증가량으로 이미 수정했습니다.

나의 가치관

Max_allowed_packet = 64M Interactive_timeout = 250 wait_timeout = 250

2019-01-15T00:00Z

이전 답변의 구체적인 예를 들면 다음과 같습니다.

SQL Server로 가져오거나 마이그레이션할 수 있도록 백업을 복원해야 했습니다. MySql만 설치했지만 실행할 필요가 없기 때문에 서비스로 등록하거나 경로에 추가하지 않았습니다.

Windows 탐색기를 사용하여 덤프 파일을 C:\code\dump.sql에 배치했습니다. 그런 다음 시작 메뉴 항목에서 MySql을 엽니다. DB를 생성한 후 다음과 같은 전체 경로를 사용하여 source 명령을 실행했습니다.

Mysql> 데이터베이스 임시 생성 mysql> 임시 mysql 사용> 소스 c:\code\dump.sql

MySQL 데이터베이스 덤프는 모든 웹마스터에게 친숙합니다. 이 절차는 데이터베이스를 다른 호스팅으로 백업하거나 전송하는 과정의 일부로 수행되므로 이는 놀라운 일이 아닙니다.

따라서 MySQL 데이터베이스를 덤프하는 방법을 아는 것은 모든 웹 개발자에게 중요합니다. 그것은 무엇입니까? 이는 SQL 언어로 된 지침이 포함된 파일로, 이로 인해 내용과 구조 모두에서 데이터베이스의 정확한 복사본이 생성됩니다. 어떤 상황에서 MySQL 데이터베이스를 덤프해야 합니까?

  • 데이터베이스를 다른 서버로 전송

데이터베이스를 다른 호스팅으로 이전하려는 경우 덤프가 필요할 수 있습니다. 도움을 받으면 아무런 어려움 없이 이전 데이터베이스의 정확한 복사본을 다시 만들 수 있습니다.

  • 데이터베이스 백업

일일 백업을 포함하는 가상 웹사이트 호스팅. 정기적으로 데이터를 백업하면 예상치 못한 상황이 발생할 경우 많은 노력과 신경을 덜 수 있습니다. 사이트 또는 서버 충돌에 대한 실험이 실패하면 전체 데이터베이스가 손실될 수 있으며 이러한 상황에서는 시기적절한 덤프만이 도움이 될 것입니다. 당연히 기본 데이터베이스와 동일한 서버에 저장할 수 없습니다. 그렇지 않으면 복구 가능성 없이 모든 정보가 손실되기 때문입니다.

MySQL 데이터베이스를 덤프하는 방법은 무엇입니까?

덤프를 생성하는 방법에는 여러 가지가 있으며, 아래에서는 주요 옵션을 살펴보겠습니다.

  • MySQL 콘솔을 사용하여 덤프 만들기

이 경우 데이터베이스 덤프를 생성하려면 명령줄이나 MySQL 콘솔을 사용하고 mysqldump -uuser -ppass db_name > file_to_save 명령을 입력해야 합니다. 이 경우 user는 덤프를 생성할 수 있는 충분한 권한이 있는 데이터베이스 사용자의 이름이고, pass는 데이터베이스의 비밀번호, db_name은 원하는 데이터베이스의 이름이고, file_to_save 대신 파일 이름을 지정해야 합니다. 덤프가 저장될 위치입니다.

명령을 올바르게 입력하면 지정된 위치(데이터베이스 덤프)에 확장명이 .sql인 파일이 나타납니다. 이 방법은 갑자기 MySQL을 다른 서버로 전송해야 하는 경우 Ubuntu와 같은 Unix 시스템 사용자에게 가장 보편적이고 인기가 있습니다. 같은 경우 콘솔 명령을 모른다면 추가 소프트웨어가 필요합니다.

  • phpMyAdmin을 사용하여 데이터베이스 덤프 만들기

추가 소프트웨어를 사용하려는 경우 phpMyAdmin 등을 사용하여 PHP를 사용하여 데이터베이스를 덤프할 수 있습니다. 이렇게 하려면 다음 단계를 따르세요.

  1. phpMyAdmin에 로그인하세요.
  2. 일반 목록에서 원하는 데이터베이스를 선택합니다.
  3. 선택한 데이터베이스에 로그인합니다.
  4. 승인 후 왼쪽 열에는 데이터베이스 자체 및 이와 관련된 서비스 정보가 포함됩니다. 이제 데이터베이스를 다시 선택해야 합니다.
  5. "내보내기" 탭으로 이동한 후 다음과 같은 일부 설정을 활성화합니다.

    DROP TABLE/VIEW/절차/함수/이벤트 추가

    이 옵션을 사용하면 나중에 덤프에서 MySQL 데이터베이스를 안전하게 복원할 수 있습니다. 동일한 이름을 가진 모든 테이블이 먼저 삭제됩니다. 즉, dpop 명령이 실행된 다음 덤프에서 유사한 테이블로 대체됩니다. 결과적으로, 중복 테이블이 생성되어 결과적으로 데이터베이스가 잘못 작동하는 것을 방지할 수 있습니다.

    지퍼로 포장하세요

    이 옵션을 활성화하면 DB 덤프가 보관되고 .zip 확장자를 가진 파일이 생성됩니다. 이렇게 하면 연결 속도가 느린 경우에도 덤프를 빠르고 정확하게 저장할 수 있습니다.

  6. 즉시 사용할 수 있는 데이터베이스 덤프를 받습니다. 모든 작업이 올바르게 완료되면 확장자가 .sql인 파일(필요한 데이터베이스 덤프)이 포함된 아카이브가 생성됩니다.

이제 갑자기 데이터베이스를 다른 서버로 전송해야 하거나 데이터베이스 백업이 유용할 수 있는 다른 상황이 발생하는 경우 MySQL 덤프를 만드는 방법을 알았습니다. 물론 위에서 설명한 방법 외에도 덤프를 만드는 방법은 더 많이 있습니다. 그러나 가장 간단한 옵션을 알고 실제로 정기적으로 사용하더라도 예기치 않은 상황에 대해 더 자신감을 가질 수 있습니다. 왜냐하면 단순히 MySQL 덤프를 배포하고 모든 데이터베이스를 신속하게 복원하는 것만으로도 충분하기 때문입니다.

당사에서 전용 서버를 구입하기로 결정한 경우 사이트 및 데이터베이스의 자동 백업을 설정할 수 있는 원격 백업 서버에 100GB가 제공됩니다. 이 경우 항상 새로운 MySQL 덤프를 갖게 됩니다.

여전히 덤프를 생성하고 서버나 호스팅을 변경하는 데 어려움이 있는 경우 RigWEB 기술 지원 담당자에게 문의하면 담당 능력 내에서 질문에 답변해 드릴 것입니다. 어떤 이유로든 직접 수행할 수 없는 경우 당사 전문가가 귀하의 웹사이트를 다른 호스팅에서 당사 웹사이트로 무료로 이전해 드립니다. 또한 정기적인 백업을 보장하고 필요한 경우 데이터의 최신 복사본을 적시에 제공할 것입니다. 전문 호스팅 RigWEB을 사용하면 모든 놀라움으로부터 프로젝트를 최대한 보호할 수 있습니다!

데이터베이스 덤프(백업)를 만드는 것은 매우 중요합니다. 이것이 바로 내가 mysqldump와 같은 훌륭한 유틸리티에 대한 예제를 통해 몇 가지 설명을 한 이유입니다.

mysqldump - 데이터베이스 또는 데이터베이스 세트의 내용을 덤프하여 백업 복사본을 생성하거나 다른 SQL 데이터베이스 서버(반드시 MySQL 서버일 필요는 없음)로 데이터를 보낼 수 있는 유틸리티입니다. 덤프에는 테이블을 생성 및/또는 채우는 SQL 명령 세트가 포함됩니다.

mysqldump-u 루트 -p -f 이름_데이터베이스 >

이 명령을 사용하여 name_database라는 이름으로 데이터베이스를 mydb_backup_name_database.txt 파일의 C 드라이브에 백업합니다.

파일을 생성할 필요는 없습니다. MySQL이 자체적으로 파일을 생성합니다.

mysql-u 루트 -p -f 이름_데이터베이스< C:\mydb_backup_name_database.txt

이 명령을 사용하여 C:\mydb_backup_name_database.txt 파일에서 백업 데이터를 가져옵니다.

참고: -f, --force는 SQL 오류가 수신되더라도 계속하도록 지정하는 옵션입니다. 오류를 무시하십시오. 예를 들어 테이블에 동일한 행이 이미 존재하는 경우입니다.

비밀번호를 묻는 메시지를 표시하지 않으려면 -p 바로 뒤에 공백 없이 비밀번호를 작성해야 합니다. 비밀번호가 비밀번호, 그러면 예는 다음과 같습니다.

mysqldump-u 루트 -p 비밀번호-f 이름_데이터베이스 > C:\mydb_backup_name_database.txt

이 명령을 자주 사용하는 경우 루트 비밀번호의 가시성을 줄이기 위해 필요한 권한을 가진 별도의 사용자를 생성하는 것이 좋습니다

좀 더 미묘한 mysqldump 설정을 살펴보겠습니다:

--데이터베이스 mysqldump는 복구 스크립트에 CREATE DATABASE /*!33333 IF NOT EXISTS*/ DBNAME 및 USE DBNAME 명령을 포함할 수 있습니다. 이렇게 하면 처음부터 작업 데이터베이스를 만들 수 있습니다. 즉, --databases를 사용하지 않고 사용자가 단일 데이터베이스를 복원하고 복원된 데이터를 배치할 위치를 명시적으로 지정한다고 가정합니다. 예를 들어 다른 MySQL 서버에서 완전히 작동하는 데이터 복사본을 만들기 위한 목적으로 백업을 생성한 경우 이 키를 사용해야 합니다.

--모든 데이터베이스특정 MySQL 서버에 존재하는 모든 데이터베이스의 복사본을 만들 수 있습니다. 일부 데이터베이스의 복사본만 만들어야 하는 경우 명령줄에서 mysqldump를 호출할 때 공백으로 구분하여 지정하기만 하면 됩니다(위 참조).

열쇠 --돕다. mysqldump 프로그램에는 여러 버전이 있습니다. 이 키를 사용하면 현재 버전에서 구체적으로 어떤 기능이 지원되는지 확인할 수 있습니다.

--추가-드롭-테이블- mysqldump가 테이블을 생성하기 전에 결과 스크립트에 drop table 명령을 추가하도록 하는 스위치입니다. 이렇게 하면 백업에서 데이터베이스를 복원할 때 일부 오류를 방지할 수 있습니다. 물론, 작업 복사본에 있는 테이블(동일한 이름을 가진 테이블이 백업에 있는 경우)이 기본 데이터베이스에서 삭제되고 백업에서 복원되기 전에 백업에서 다시 생성된다는 점을 고려해야 합니다.

--데이터 없음. 이 키를 사용하면 데이터 자체 없이 테이블/데이터베이스 구조의 복사본을 빠르게 만들 수 있습니다. 예를 들어, 복잡한 테이블을 생성했고 나중에 그 구조를 저장하려고 하지만 이 테이블에 있는 데이터 자체는 백업 복사본에 필요하지 않습니다.

--결과 파일=...- 이 스위치는 출력을 파일로 리디렉션하는 데 사용할 수 있습니다. ">" 명령으로 일반 Unix 리디렉션을 사용하거나 이 키를 사용할 수 있습니다. 누가 무엇을 좋아하나요?

호스팅 환경에서 mysqldump를 사용하는 데 유용한 또 다른 팁입니다. 일반적으로 호스팅을 사용할 때 사용자에게 몇 가지 제한 사항이 적용됩니다. 예를 들어, 일정량 이상의 물리적 메모리(RAM, RAM)를 점유할 수 없습니다. mysqldump는 기본적으로 MySQL 서버로부터 받은 모든 데이터를 메모리에 넣은 다음, 모두 디스크에 씁니다. 따라서 공급자가 예를 들어 30MB의 메모리 대여를 허용하고 mysqldump를 사용하여 복사하는 데이터베이스가 50MB를 차지하면 여기서 오류가 발생합니다. mysqldump가 제대로 작동하지 않습니다. 충돌이 발생하여 이에 대해 알려줄 것입니다. mysqldump가 데이터를 임시로 메모리에 저장하는 대신 디스크에 직접 쓰도록 "강제"하려면 다음 키를 사용하십시오. --빠른. 이렇게 하면 문제가 해결됩니다.

다음은 몇 가지 유용한 예입니다.

mysqldump -u 루트 -p 비밀번호-f --default-character-set=cp1251 DB이름| gzip -c > 파일 이름.txt .gz

다음 명령을 사용하여 이러한 아카이브의 압축을 풀 수 있습니다.

gunzip 파일 이름.txt.gz

백업이 수행된 날짜를 확인하려면 다음 명령을 작성할 수 있습니다.

mysqldump -uLOGIN -PPORT -hHOST -pPASS DBNAME | gzip -c > `날짜 "+%Y-%m-%d"`.gz

다른 인코딩으로 덤프를 만들어야 하는 경우 변수를 사용하는 것이 편리합니다.

세트 DB 문자= UTF8

세트 DB이름= 위반

mysqldump -u 루트 -p 비밀번호-f --기본 문자 집합=$ DB 문자 $DB이름| bzip2 -c > sql. $DBNAME.`날짜 "+%Y-%m-%d"`.bz2

오래된 아카이브 제거를 자동화하려면 일반적으로 unix에서 발견되는 cron 및 find 명령을 사용해 보십시오. 주기적으로 실행

찾다~/directory-with-archives -name "*.gz" -mtime +7 -exec rm -f () \;

따라서 7일보다 "오래된" 아카이브를 삭제하게 됩니다.

안녕하세요, 친구들! 🙂

오늘 저는 콘솔에서 MySQL 작업에 대한 대화를 계속하고 MySQL 데이터베이스 내보내기 절차에 주의를 기울이기로 결정했습니다.

이 기사에서는 MySQL 데이터베이스를 덤프하는 방법과 MySQL의 데이터를 Excel 파일 및 csv 형식으로 업로드하는 방법에 대해 설명합니다.

정보를 검색하기 위한 다양한 옵션을 살펴보겠습니다. 하나 또는 여러 데이터베이스의 덤프 생성, 개별 테이블에서 데이터 내보내기 및 임의 결과 선택하다요청.

또한 서버 콘솔과 MySQL 명령줄에서 MySQL 데이터베이스의 데이터를 출력하는 방법에 대해서도 설명하겠습니다.

이 기사에서는 phpMyAdmin 및 기타 시각적 도구를 사용하여 데이터를 내보내는 방법에 대해서는 설명하지 않습니다.

첫째, 인터넷에 이 주제에 대한 자료가 이미 충분하기 때문입니다. 게다가 복사해서 붙여넣기도 싫은 고급 소재입니다.

둘째, 제가 이야기했던 기사 중 하나에서 MySQL 데이터베이스의 정보를 SQL 파일로 출력하는 과정을 간략하게 검토했습니다.

따라서 콘솔 작업에 대한 정보를 활용할 수 있는 전문 개발자나 시스템 관리자가 아니고 데이터베이스를 phpMyAdmin으로 내보내는 방법에 대한 지침만 보고 온 경우 위 링크의 정보만 읽을 수 있습니다. .

나는 당신이 나를 올바르게 이해하기를 바랍니다. 나는 어떤 식 으로든 당신을 화나게하고 싶지 않지만 당신이 당신의 비즈니스를 위해 최대한의 이익을 위해 시간을 보내고 당신이 찾고 있던 것을 얻기를 바랍니다.

이것으로 소개 부분을 마치고 MySQL 데이터베이스 덤프를 생성하기 위한 콘솔 명령에 대한 검토로 넘어갑니다. 저는 저장되는 데이터의 양에 따라 정렬하기로 결정했습니다. 전체 데이터베이스 내보내기부터 시작하여 개별 테이블 및 결과로 끝납니다. 임의의 쿼리.

콘솔을 통해 MySQL 데이터베이스 덤프 생성

처음에 약간의 설명을 드리고 싶습니다.

데이터베이스 덤프 SQL 명령 세트가 포함된 파일로, 실행 시 데이터베이스와 테이블을 생성하고 정보를 채울 수 있습니다. MySQL 데이터베이스를 다른 서버나 기존 서버에 복사하기 위해 다운로드하려는 사용자에게는 덤프가 필요합니다.

또한, 누구든지 모르는 경우 MySQL 데이터베이스의 백업은 본질적으로 특정 기간에 생성된 덤프이므로 필요한 경우 데이터베이스의 구조와 데이터를 복원할 수 있습니다.

데이터 내보내기- 이는 단순히 텍스트 또는 그래픽 편집기를 사용한 추가 작업을 위해 텍스트 형식으로 테이블에서 정보를 추출하는 것입니다.

따라서 이러한 작업에 대한 명령은 약간 다릅니다.

데이터베이스 덤프를 생성하기 위해 MySQL에는 다음과 같은 내장 유틸리티가 있습니다. mysqldump, 이는 서버 콘솔이나 다른 셸의 MySQL 명령줄 외부에서 사용해야 합니다.

따라서 가장 간단하고 일반적인 옵션인 MySQL 콘솔의 특정 데이터베이스에서 데이터를 내보내 다른 서버로 전송하거나 내부 복사하려면 다음 명령을 실행해야 합니다.

Mysqldump -u 사용자 이름 -p 데이터베이스_이름 > 경로 및_덤프_파일_이름

이 유틸리티는 SQL 명령을 사용하여 파일 형식으로만 MySQL 데이터베이스 덤프를 생성할 수 있으므로 파일에 대해 어떤 확장자를 선택하든 해당 내용은 어떤 경우에도 동일합니다. 그리고 파일을 생성할 수 있도록 MySQL에서 정보를 내보내기 전에 파일이 위치할 디렉터리의 쓰기 권한을 확인하는 것을 잊지 마세요.

갑자기 서버의 모든 데이터베이스를 덤프해야 하는 경우 다음 명령 옵션을 사용하십시오.

Mysqldump -u 사용자 이름 -p --all-databases > path_and_dump_file_name

몇 가지 특정 데이터베이스만 덤프하려면 다음 매개변수를 사용하여 mysqldump를 호출해야 합니다.

Mysqldump -u 사용자 이름 -p --databases 데이터베이스_이름1, 데이터베이스_이름2, ... > 경로 및_덤프파일_이름

결과적으로 각 경우에 포함된 테이블의 구조(필드, 유형, 인덱스, 키 등)를 생성하기 위한 명령과 테이블에 데이터를 채우는 작업이 포함된 MySQL 데이터베이스 덤프를 받게 됩니다.

이 옵션은 전체 데이터베이스를 복원하고 복사하는 경우에만 적합합니다.

특정 MySQL 테이블을 백업하고 해당 데이터를 읽을 수 있는 형식으로 얻는 방법에 대해 자세히 설명하겠습니다.

MySQL 테이블 덤프 및 데이터 내보내기

특정 MySQL 데이터베이스 테이블의 덤프를 생성하려면 동일한 유틸리티가 필요합니다. mysqldump, 다음 매개변수를 사용하여 호출됩니다.

Mysqldump -u 사용자 이름 -p 데이터베이스_이름 테이블_이름1, 테이블_이름2, ... > 경로 및_덤프파일_이름

mysqldump 호출 시 필요한 테이블을 파라미터 값으로 지정할 수 있습니다. --테이블, 매개변수를 사용하는 경우 --데이터베이스무시됩니다:

Mysqldump -u 사용자 이름 -p --databases 데이터베이스_이름1, 데이터베이스_이름2 --테이블 테이블_이름1, 테이블_이름2, ... > 경로 및_덤프파일_이름

위의 예에서는 다음 오류가 표시됩니다.

Mysqldump: 오류 발생: 1049: 데이터베이스를 선택할 때 알 수 없는 데이터베이스 "database_name1"

보시다시피 목록의 최신 데이터베이스만 사용됩니다. 원칙적으로 이 동작은 매우 논리적입니다. 지정된 테이블이 일부 데이터베이스에 표시되지 않을 수도 있습니다.

좋습니다. MySQL 데이터베이스 테이블 덤프를 받았습니다. 이를 복원하거나 구조와 함께 복사하는 데 사용할 수 있습니다.

하지만 관리자에게 보내고 일반 텍스트 또는 스프레드시트 편집기에서 볼 수 있도록 정보를 읽을 수 있는 형식으로 저장해야 하는 경우에는 어떻게 해야 합니까? MySQL에는 이를 위한 도구도 있습니다.

유틸리티에 전화하는 옵션은 우리의 계획을 달성하는 데 도움이 될 것입니다 mysql특정 매개변수를 사용하여 콘솔에서:

Mysql -u 사용자 이름 -p 데이터베이스_이름 -e "SELECT * FROM 테이블_이름"

이 명령을 사용하면 필요한 데이터베이스에 대한 쿼리를 실행하고 MySQL 명령줄로 이동하지 않고도 결과를 콘솔에 출력할 수 있습니다.

그런데 데이터를 콘솔에 출력하지 않고 파일에 쓰려면 다음과 같이 명령을 보완해야 합니다.

Mysql -u 사용자 이름 -p -e "SELECT * FROM 테이블 이름" > 경로 및_파일 이름

이러한 구성 덕분에 테이블의 모든 필드뿐만 아니라 특정 필드에도 저장된 데이터를 얻을 수 있습니다. 이렇게 하려면 와일드카드(*) 기호를 쉼표로 구분하여 필요한 기호로 바꾸면 됩니다.

결과적으로 출력은 헤더 형식의 필드 이름과 모든 레코드에 대한 정보를 포함하는 일반 텍스트 파일이 됩니다. 생성 시 제공한 해상도에 관계없이 일반 텍스트 편집기에서 열 수 있습니다.

결과 파일이 스프레드시트 편집기에 올바르게 표시되도록 MySQL 데이터베이스에서 xls 또는 csv 형식으로 데이터를 내보내려는 경우 이 작업을 수행하는 방법은 잠시 후에 알려 드리겠습니다. :)

쿼리를 사용하여 MySQL 데이터베이스에서 백업 생성 및 데이터 출력

우리는 MySQL 데이터베이스(하나 또는 여러 개, 개별 테이블)를 덤프하는 방법에 대해 이야기했습니다. 하지만 실제로는 하나의 테이블에 국한되지 않는 데이터 세트를 내보내야 하는 경우가 있습니다. 또는 테이블에서 일부 데이터만 선택해야 합니다.

특히 기업 프로젝트 개발자는 관리자가 모든 종류의 통계 데이터를 제공하도록 요청할 때 이러한 문제에 직면하는 경우가 많습니다. 또는 테이블의 특정 부분을 빠르게 복원하기 위해 백업해야 하는 경우.

백업을 위해서는 동일한 유틸리티가 필요합니다 mysqldump, 다음과 같이 호출해야 합니다.

Mysqldump -u user_name -p 데이터베이스_이름 테이블_이름 --where "lookup" > path_and_dump_file_name

결과적으로 우리는 전체 구조가 포함된 테이블을 생성하기 위한 SQL 명령이 포함된 파일을 받게 되며, 생성 후 조회 쿼리를 사용하여 선택된 정보로 채워지게 됩니다.

하나 이상의 테이블에 저장된 데이터를 가져와야 하는 경우 테이블의 모든 데이터를 검색할 때 이전 사례에서 사용된 명령을 몇 가지 설명과 함께 수정해야 합니다.

Mysql -u user_name -p -e "SELECT * FROM table_name WHERE 조회" > path_and_file_name

아시다시피 지시문을 사용하여 요청에 지정된 다양한 설명 외에도 어디, 다른 SQL 구문을 사용할 수 있습니다. 가입하다, 노동 조합등.

원하는 통계를 수집할 수 있습니다 :)

다음 명령을 사용하여 MySQL 명령줄에서 작업할 때도 동일한 작업을 수행할 수 있습니다.

SELECT * FROM Database_table WHERE INTO OUTFILE "path_and_file_name"을 조회합니다.

이 명령은 샘플링 결과가 포함된 파일을 생성하도록 특별히 설계되었습니다. 또한 결과를 파일로 내보낼 수 있을 뿐만 아니라 변수에 쓸 수도 있으며, 출력 데이터의 형식을 다양한 방식으로 지정할 수 있습니다.

위의 경우에 해당하는 경우 이 명령을 호출하기 위한 전체 매개변수 목록과 옵션을 여기(https://dev.mysql.com/doc/refman/5.7/en/select-into.html)에서 찾을 수 있습니다.

mysqldump에 대한 간략한 설명을 마무리하기 위해 매개변수 목록이 포함된 명령을 호출하여 MySQL 데이터베이스 및 테이블의 최적화된 덤프를 생성하고 데이터베이스 및 개별 테이블을 복원하는 방법보다 시간이 덜 걸리는 변형을 제공하고 싶습니다. 일반 통화:

Mysqldump -u 사용자 이름 -h 호스트_또는_IP_MySQL_server -p --no-autocommit --opt 데이터베이스_이름 > 경로_및_dump_파일_이름;

실험을 위해 이 옵션을 사용하여 143MB 크기의 MySQL 데이터베이스를 덤프했습니다. 특별한 매개변수 없이 mysqldump를 호출하여 만든 덤프에서 데이터베이스를 복원했을 때 1분 3초가 걸렸던 것에 비해 후속 복원에는 59초가 걸렸다.

나는 이것이 작은 일이라는 데 동의합니다. 그러나 이는 일정량의 데이터에만 해당됩니다. 1GB보다 큰 덤프를 생성할 때 이 기술을 사용하면 차이가 더 커집니다.

이러한 상황이 발생하면 먼저 MySQL 데이터베이스 덤프를 보관하는 것을 잊지 마십시오. 가장 좋은 것은 tar.gz입니다. 그러면 복구 시간이 훨씬 단축됩니다.

MySQL에서 Excel 및 csv 파일로 데이터 내보내기

MySQL에서 정보를 출력하는 방법에 대한 정보를 이 두 가지 형식으로 하나의 블록에 결합한 것은 아무것도 아닙니다. 왜냐하면... 그것들은 매우 유사하며 거의 동일한 방식(테이블 형식의 정보 구조)으로 사용되며 동일한 내보내기 명령이 호출됩니다.

아시다시피 이러한 형식 간의 유일한 중요한 차이점은 xls 및 xlsx 확장자에는 Microsoft Office Excel에서 생성된 파일이 있으며 Windows에서만 작동하는 반면 csv 파일은 더 보편적이며 많은 편집기에서 작업이 가능하다는 것입니다.

이는 xls가 Microsoft Office Excel을 제외한 어느 곳에서도 열리지 않는다는 의미는 아닙니다. 동일한 OpenOffice는 그 반대를 확인합니다.

그러나 이것이 가능하려면 소프트웨어 제품에 이러한 지원이 있어야 합니다. csv 파일은 메모장과 같은 일반 텍스트 편집기에서도 읽을 수 있지만 이 형식은 완전히 읽을 수 없습니다.

SQL 쿼리 결과를 xls 또는 csv로만 내보낼 수 있다는 사실부터 시작하겠습니다. 이전에 작업하는 방법을 배웠기 때문입니다. 한 번의 작업으로 전체 데이터베이스를 하나의 파일로 출력하는 것은 불가능합니다.

첫째, 이것은 최적이 아닙니다. 왜냐하면... 데이터베이스에 많은 양의 정보가 저장되어 있으면 이러한 파일이 열릴 가능성이 없습니다. 둘째, 파일 내부의 정보를 테이블과 필드로 분할하는 방법이 명확하지 않습니다.

아니요, 물론 이 작업을 수행하는 것이 가능하지만 하나의 명령으로 수행할 가능성은 거의 없으며 일반적으로 콘솔에서 누군가가 이 작업을 수행할 가능성도 없습니다. 이러한 목적을 위해서는 특별한 소프트웨어나 최소한 스크립트가 필요하다고 생각합니다.

전체 MySQL 데이터베이스의 정보를 콘솔에 있는 하나 또는 여러 개의 xls 파일로 한 번에 내보낼 수 있는 방법을 갑자기 알게 된 경우 이에 대한 설명을 댓글에 적어주세요. 나는 이것에 대해 읽는 것이 많은 사람들에게 도움이 될 것이라고 생각합니다.

따라서 MySQL에서 xls 및 csv로 데이터를 내보내는 방법에 대해 이야기하는 경우 유틸리티를 통해 서버 콘솔에서 직접 수행할 수 있습니다. mysql또는 이전 기사에서 소개한 작업에서요.

순서대로 시작합시다.

다음 명령을 사용하여 서버 콘솔에서 MySQL 데이터베이스의 데이터를 csv 및 xls 형식으로 직접 내보낼 수 있습니다.

~에 리눅스시스템:

Mysql -u 사용자 이름 -d 데이터베이스_이름 -p -e "SELECT * FROM 데이터베이스_테이블;" | sed "s/"/\"/;s/\t/\",\"/g;s/^/\"/;s/$/\"/;s/\n//g" > path_and_file_name. CSV

원칙적으로 꼭 필요한 경우 이 명령을 사용하여 MySQL 데이터를 Excel 파일로 내보낼 수 있습니다. 하지만 솔직히 말해서 실제로는 이 문제를 다루지 않았고 결국 어떤 결과가 나올지 전혀 모르겠습니다. 왜냐하면... 저는 현재 Windows에서 일하고 있습니다. Linux에서 이 명령을 사용하는 경우 작업 결과에 대한 설명을 적어주세요. 이 정보는 모든 사람의 관심을 끌 것이라고 생각합니다.

~에 윈도우:

안타깝게도 위 명령을 사용하여 MySQL 테이블에서 csv로 데이터를 내보내는 작업은 이 경우 작동하지 않습니다. Linux와 달리 Windows에는 Linux의 sed와 같이 스레드 작업을 위한 내장 콘솔 명령이 없습니다.

물론 설치도 가능하지만 너무 번거롭습니다. 또는 다음을 사용할 수 있습니다. CygWin— Windows 시스템용 Linux 콘솔 에뮬레이터.

이미 설치되어 있으면 좋습니다. 그렇지 않으면 선택한 방법을 사용하여 MySQL 데이터베이스에서 데이터를 내보내면 너무 많은 문제가 발생합니다.

하지만 정보를 xls 파일로 추출하는 것은 코펙 5개만큼 쉽습니다 :) 다음과 같은 방법으로 실행하는 것은 매우 쉽습니다. 제가 개인적으로 시도해 본 방법은 다음과 같습니다.

Mysql -u 사용자 이름 -d 데이터베이스_이름 -p -e "SELECT * FROM 데이터베이스_테이블;" > 경로_및_파일_이름.xls

이 파일은 Microsoft Office Excel에서 전혀 문제 없이 열렸습니다. 유일한 것은 파일을 열 때 열려는 파일의 실제 형식이 지정된 확장자와 다르다는 경고 메시지가 화면에 표시된다는 것입니다.

그러나 작업을 확인하면 문서가 쉽게 열렸습니다. 모든 정보는 테이블 자체에 저장된 형식으로 셀로 나누어졌습니다.

Microsoft Office Excel에서 특정 작업을 수행하면 나중에 문제가 발생할 수 있습니다. 평소에 데이터를 살펴봤을 때 적어도 특이한 점은 발견되지 않았습니다.

MySQL에서 내보낸 xls 파일을 이 프로그램이나 다른 프로그램에서 사용하는 동안 문제가 발생하면 댓글로 알려주시기 바랍니다.

위에서 설명한 방법을 사용하면 원칙적으로 MySQL 데이터베이스의 내용을 csv 파일로 내보낼 수 있습니다. 그러나 테이블의 여러 필드에 있는 데이터는 구분 기호 없이 한꺼번에 기록되므로 일반적으로 csv 파일에서 작동하는 테이블 작업을 위한 다양한 프로그램에서 잘 표시되지 않을 수 있습니다.

그런데 OpenOffice는 신경 쓰지 않습니다 :) MySQL 데이터베이스의 내용을 xls로 내보내는 방식으로 얻은 정보를 자동으로 구분했습니다. 그가 어떻게하는지 모르겠지만 사용하는 것이 좋습니다 :)

글쎄, 동일한 Microsoft Office Excel은 테이블의 하나의 레코드에 해당하는 모든 정보를 구분 기호 없이 하나의 셀에 작성하여 표시했습니다. 다른 테이블 편집자들도 마찬가지일 것이라고 생각합니다.

따라서 MySQL 데이터베이스를 csv 파일로 내보낼 때는 편집자가 이해할 수 있는 특수 문자로 정보를 분리해야 합니다.

그러다가 MySQL 데이터를 csv와 xls로 내보내는 두 번째 방법, 즉 MySQL 명령줄을 사용하는 방법에 점차 접근하게 되었습니다.

따라서 이런 방식으로 MySQL 데이터를 csv 파일로 내보내려면 다음 명령이 필요합니다.

SELECT * FROM Database_table INTO OUTFILE "path_and_file_name.csv" 필드는 "," ENCLOSED BY """ 라인은 "\n"으로 종료됩니다.

실행 결과 호출 시 지정한 경로에 csv 파일이 수신되며, 이는 대부분의 최신 스프레드시트 편집기에서 올바르게 열립니다. 혹시라도 MySQL 데이터베이스에 연결한 후에만 이 명령을 실행해야 한다는 점을 상기시켜 드립니다.

이 명령은 Microsoft Office Excel에서 올바르게 표시되도록 MySQL 데이터를 xls 파일로 내보내는 데에도 유용합니다. 이 경우에만 구분 기호가 필요하지 않습니다. 정보가 셀로 분할되는 것을 방해합니다.

SELECT * FROM 데이터베이스_테이블 INTO OUTFILE "path_and_file_name.xls";

그러나 실제로 모든 것이 내가 설명한 것처럼 간단하지는 않습니다. 명령을 실행하는 동안 내보내기가 완료되지 못하게 하는 다음 오류가 콘솔에 발생할 수 있습니다.

오류 1290(HY000): MySQL 서버가 --secure-file-priv 옵션으로 실행 중이므로 이 문을 실행할 수 없습니다.

이는 MySQL 서버가 다음 옵션으로 시작되었기 때문에 발생합니다. --보안 파일-priv. 개인적으로 저는 콘솔에서 작업하기 위해 WAMP OpenServer 키트에 포함된 MySQL 배포판을 사용하고 결과적으로 이런 방식으로 MySQL 서버를 시작한다는 사실 때문에 이 문제에 직면했습니다.

문제를 해결하는 방법에는 두 가지가 있습니다.

  • MySQL 서버 시작 매개변수 변경
  • 최종 MySQL 내보내기 파일의 경로를 변경합니다.

첫 번째 방법은 나에게 너무 복잡해 보였습니다. 왜냐하면... 나는 모든 상황에 따라 내가 작성하지 않은 OpenServer 구성을 조사해야 할 것입니다 🙂 따라서 두 번째 경로를 선택하기로 결정했습니다. 비슷한 문제가 발생하면 저를 따라 반복하십시오.

먼저 MySQL 명령줄로 이동하여 다음 명령 중 하나를 실행해야 합니다.

"secure_file_priv"와 같은 변수를 표시합니다. @@GLOBAL.secure_file_priv를 선택하세요.

두 가지를 모두 실행한 결과는 MySQL 전역 변수의 값이 됩니다. secure_file_priv, 여기에는 MySQL 데이터 내보내기 및 가져오기 작업을 수행할 수 있는 디렉터리 경로가 포함되어 있습니다(향후 데이터 가져오기에 대한 기사 링크).

저것들. 명령을 사용할 때 데이터 로드그리고 선택... 아웃파일로내보낸 파일과 가져온 파일은 이 디렉터리 내에서만 찾을 수 있습니다.

내 경우에는 이 변수가 일반적으로 다음과 같이 설정되었습니다. 없는, 왜냐하면 이미 말했듯이 OpenServer에 포함된 배포판의 MySQL 유틸리티를 사용하여 콘솔에서 작업합니다. 이 값은 지정된 명령을 사용한 MySQL 데이터 내보내기 및 가져오기 작업이 완전히 종료되었음을 나타냅니다.

나중에 밝혀졌듯이 이는 박스형 WAMP 및 MAMP 서버를 사용할 때 흔히 발생하는 상황입니다.

불행하게도 제 경우에는 MySQL 전역 변수의 값을 변경하는 일반적인 방법을 사용할 수 없었습니다.

SET 변수명 = 값;

결과적으로 콘솔에는 다음 오류만 표시되었습니다.

라인 1의 오류 1238(HY000): "secure_file_priv" 변수는 읽기 전용 변수입니다..

결과적으로 변수의 값을 변경하려면 secure_file_priv그리고 내보내기 및 가져오기 작업을 열려면 MySQL 배포판의 루트 디렉터리에 있는 MySQL 구성 파일 mysql.ini로 이동해야 했습니다. 또는 MySQL이 WAMP/LAMP/에 포함된 경우 다른 방법으로 액세스할 수 있습니다. MAMP 서버 빌드.

그런데 파일 교환 스풀 디렉터리의 경로를 변경하려면 동일한 작업을 수행해야 합니다.

내 경우에는 이 변수가 이미 구성에 존재하며 주석 형식으로만 존재합니다.

보안 파일-priv = "%dprogdir%\\userdata\\temp"

없으면 해당 섹션에 처음부터 작성하세요. (적어도 나에게는 그것이 거기에 있었다).

주석을 해제하고, 쓰여진 형태대로 사용하기로 했습니다. 저것들. MySQL에서 데이터를 내보내고 다시 가져올 때 내 파일은 이제 디렉터리에 저장됩니다. c:\openserver\userdata\temp\.

구성을 변경한 후(어쨌든), 변경 사항이 적용되도록 하려면 서버나 설정을 편집한 별도의 서비스를 다시 시작하는 것을 잊지 마세요!

반드시 MySQL 서버를 다시 시작한 후 변수를 다시 표시하십시오. secure_file_priv해당 값을 클립보드에 복사합니다.

이제 처음과 같이 명령을 호출해야 합니다. MySQL 데이터베이스의 정보가 저장될 파일 이름 앞에만 변경하려는 변수에 저장된 경로를 다음 형식으로 작성해야 합니다.

SELECT * FROM Database_table INTO OUTFILE "secure_file_priv_value\file_name.csv";

그 후에는 MySQL에서 데이터를 내보내는 것이 제 경우에는 효과가 있었습니다.

중요한 포인트! Windows에서 MySQL을 사용하는 경우 파일 경로를 지정할 때 "\"를 "/"로 변경하는 것을 잊지 마십시오. 그렇지 않으면 오류가 발생합니다. --보안 파일-priv계속해서 나타날 겁니다.

이것으로 MySQL 데이터베이스와 해당 테이블을 덤프하는 방법과 MySQL 테이블의 출력 데이터를 다양한 형식으로 덤프하는 방법에 대한 기사를 마칩니다. 댓글에 리뷰를 작성하고 실제로 가장 자주 사용하는 스크립트 옵션을 모든 사람과 공유하세요.

기사가 마음에 들었다면 소셜 네트워크에 기사를 다시 게시하거나 기본 호스팅 비용을 지불할 수 있도록 아래 양식을 사용하여 재정적으로 작성자에게 감사를 표할 수 있습니다.

모두들 행운을 빌고 다시 만나요! 🙂

추신: 웹사이트가 필요하거나 기존 웹사이트를 변경해야 하지만 이에 대한 시간이나 욕구가 없다면 제가 서비스를 제공할 수 있습니다.

5년 이상의 경력전문적인 웹사이트 개발. 작업 PHP

이상하지만 인터넷에서 이런 정보를 찾는 것은 꽤 어렵습니다. 온갖 종류의 좌파 추천 모음. 그러나 사실 모든 것이 간단합니다. 다음 명령을 사용하여 덤프를 복원할 수 있습니다.

# mysql-위로< mysql_dump.sql.

대신 사용자 이름을 대체하고 개인적으로 루트에서 복구를 수행합니다. 그리고 mysql_dump, sql에서는 실제로 덤프가 만들어지는데 mysqldump공익사업. -p 옵션은 비밀번호를 사용한 인증을 나타냅니다. Enter를 누르면 비밀번호를 묻는 메시지가 나타납니다. 실제로 그게 전부입니다. 다음 명령을 사용하여 덤프를 만들 수 있습니다.

# mysqldump-u 루트 -p -f 데이터베이스_이름 > file_with_dump.sql

여기서 -f Database_name 매개변수는 저장 중인 데이터베이스의 이름을 지정합니다. 필요한 모든 것이 있으면 다음으로 대체해 드립니다. --모든 데이터베이스.이 옵션은 서버에 모든 데이터베이스를 저장함을 나타냅니다. 매번 비밀번호를 입력하지 않으려면 명령에서 직접 비밀번호를 지정할 수 있습니다(스크립트에서 크론 덤프를 수행하는 경우 필요함). 그러나 보안 관점에서 볼 때 특히 다음과 같은 경우에 질문이 발생합니다. 비밀번호는 근육의 루트입니다. 이제 근육만 최소한 md5 비밀번호를 이해했다면... 하지만 그가 이해하지 못한다는 것은 사실이 아닙니다. 아마도 제가 모를 수도 있습니다 :)

작가

알렉스 라즈기발로프

박해의 망상을 즐기고 있는 나이 불명의 미친 남자. 병적으로 불신하고 이기적이며 권위주의적입니다. 2차 진단 - 프로그래머 및 보조자. 그는 엉뚱한 대화 수준의 영어를 구사합니다. 다른 언어에도 익숙합니다. 그는 모든 사람과 모든 것에 관심이 있기 때문에 모든 분야에 대한 그의 지식은 피상적이고 얕습니다. 캐릭터가 통제불능이군요. 강도 - 55도.



질문이 있으신가요?

오타 신고

편집자에게 전송될 텍스트: