sql.gz 파일을 데이터베이스에 어떻게로드합니까? (가져 오기)


150

gzip으로 압축 된 SQL 파일을 mysql로 ​​직접 가져 오려고합니다. 이것이 올바른 방법입니까?

mysql -uroot -ppassword mydb > myfile.sql.gz

14
질문의 gzip 측면을 무시하더라도 화살표가 잘못된 방향을 가리키고 있습니다.
Matt Fletcher

답변:


238
zcat /path/to/file.sql.gz | mysql -u 'root' -p your_database

>mysql명령 의 출력을 stdout파일 에 작성합니다 myfile.sql.gz. 원하는 파일 이 아닐 수도 있습니다. 또한이 명령은 MySQL 사용자 "root"의 비밀번호를 묻습니다.


15
좋은 보안 방법으로, 암호를 명령 행에 입력하고 mysql이 암호를 묻도록 할 것입니다.
Moriarty 교수

9
또는 더 나은 방법 : ~/.my.cnf자격 증명으로 생성 하십시오. ;)
joschi

5
@Prof. Moriarty 설명에서을 통해 비밀번호를 사용하지 않도록 명령을 수정할 수 있습니다 zcat /path/to/file.sql.gz | mysql -u 'root' -p your_database. 마지막 매개 변수는 암호가 아닌 사용하려는 데이터베이스임을 알 수 있습니다.
bafromca

6
@ Prof.Moriarty의 의견을 약간 수정하려면 좋은 보안 방법은 암호를 명령 줄에 입력 하지 않고 (히스토리에 저장되거나 어깨 너머로 볼 수 있음) MySQL이 요청하도록하는 것입니다. -p 플래그 만 사용하면 MySQL이 비밀번호를 묻는 프롬프트를 표시합니다.
George

4
빌어 먹을 데이터베이스 덤프를 압축 상태로 두는 것에 대해 +1
Dmitri DB

81

sql.gz 파일을 가져 오는 동안 진행률 표시 줄을 표시하려면 pv다음을 다운로드 하여 사용하십시오.

pv mydump.sql.gz | gunzip | mysql -u root -p

CentOS / RHEL에서을 사용하여 pv를 설치할 수 있습니다 yum install pv.

데비안 / 우분투에서 apt-get install pv.

MAC에서 brew install pv


2
pv우분투 저장소에있는 것 같습니다 (적어도 12.04 LTS에서는)하지만 다시 가져와야 sudo apt-get install pv합니다. Banjer에게 감사합니다. 큰 데이터베이스 가져 오기에 적합합니다!
toon81 2019

pv mydump.sql.gz를 실행해야했습니다. | 건집 | mysql -u 루트 my_database_name. 그 이유는 테이블을 가져 오는
중이고

MAC에서,brew install pv
점수

54

가장 간단한 방법은 가져 오기 전에 데이터베이스 파일의 압축을 푸는 것입니다. 또한 @Prof. Moriarty 에서는 명령에 비밀번호를 지정하지 않아야합니다 (비밀번호를 묻는 메시지가 표시됨). webcheatsheet 에서 가져온이 명령 은 데이터베이스를 압축 해제하여 한 번에 가져옵니다.

gunzip < myfile.sql.gz | mysql -u root -p mydb

1
또한 가져 오기 전에 mydb를 작성해야합니다. 이것은 당신을 위해 db를 만들지 않습니다.
Siddhartha

gunzip10GB 압축 파일의 파이핑 으로 인해 가져 오기가 중단되었습니다. 그것이 메모리 제약이나 다른 것이 원인인지 확실하지 않지만 앞으로 한 번에 한 단계 씩 수행하는 측면에서 잘못했습니다.
Ryan Tuck

그 @RyanTuck : 프로세스의 이러한 종류의 제한을 추진하고있다
icc97

@Siddhartha sql 덤프 파일에 따라 다릅니다. 때때로 이들은 데이터베이스 작성 명령문을 포함합니다.
루비

말이되는 @rooby.
Siddhartha


5

macOS에서는 다음을 사용했습니다.

zcat < [Database].sql.gz | mysql -u root -p [Database Name in MySQL]

비밀번호를 입력하십시오.


4

또한 SQL 파일에 USE 문이 있는지 확인하십시오. 명령 행에서 데이터베이스를 지정한다고해서 SQL 파일 내에 다른 대상이 지정된 경우 데이터가 종료되는 것은 아닙니다.


2
다음과 같이 명령을 확장하면 pv mydump.sql.gz | gunzip | mysql -u root -p your_database됩니다. 수락 된 답변은이 방법을 사용합니다.
bafromca

1

들어 레스 햇의 bzip2 압축 파일 (.sql.bz2)를 사용 :

bzcat <file> | mysql -u <user> -p <database>

또는

pv <file> | bunzip2 | mysql -u <user> -p <database>

진행률 표시 줄을 볼 수 있습니다.


0

명령 -c, --stdout, --to-stdout옵션을 사용할 수 있습니다gunzip

예를 들면 다음과 같습니다.

gunzip -c file.sql.gz | mysql -u root -p database
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.