Câu trả lời:
zcat /path/to/file.sql.gz | mysql -u 'root' -p your_database
>
sẽ ghi đầu ra của mysql
lệnh stdout
vào tập tin myfile.sql.gz
mà có lẽ không phải là điều bạn muốn. Ngoài ra, lệnh này sẽ nhắc bạn nhập mật khẩu của người dùng MySQL "root".
~/.my.cnf
với các thông tin. ;)
zcat /path/to/file.sql.gz | mysql -u 'root' -p your_database
. Nó sẽ biết tham số cuối cùng là cơ sở dữ liệu bạn muốn sử dụng, không phải mật khẩu của bạn.
Để hiển thị thanh tiến trình trong khi nhập tệp sql.gz, hãy tải xuống pv
và sử dụng như sau:
pv mydump.sql.gz | gunzip | mysql -u root -p
Trong CentOS / RHEL, bạn có thể cài đặt pv với yum install pv
.
Trong Debian / Ubuntu apt-get install pv
.
Trong MAC, brew install pv
pv
dường như cũng có trong repos Ubuntu (ít nhất là trong 12.04 LTS), nhưng một lần nữa bạn cần phải làm sudo apt-get install pv
để có được nó. Cảm ơn Banjer, điều này là hoàn hảo cho nhập khẩu cơ sở dữ liệu lớn!
brew install pv
Cách đơn giản nhất là giải nén tệp cơ sở dữ liệu trước khi nhập. Cũng như được đề cập bởi @Prof. Moriarty bạn không nên chỉ định mật khẩu trong lệnh (bạn sẽ được hỏi mật khẩu). Lệnh này được lấy từ webchcoateet sẽ giải nén và nhập cơ sở dữ liệu trong một lần:
gunzip < myfile.sql.gz | mysql -u root -p mydb
gunzip
trên một tệp nén 10 GB khiến quá trình nhập của tôi bị đóng băng. không chắc đó có phải là do hạn chế về bộ nhớ hay không nhưng tôi sẽ thất bại trong việc thực hiện từng bước một trong tương lai.
Nếu bạn gặp lỗi từ đó zcat
, trong đó thông báo lỗi chứa tên tệp có thêm hậu tố .Z
, sau đó thử sử dụng gzcat
thay thế, như được mô tả tại https://stackoverflow.com/questions/296717/zcat-wont-unzip-files-properly
Đồng thời kiểm tra xem có bất kỳ câu lệnh USE nào trong tệp SQL không. Việc chỉ định cơ sở dữ liệu tại dòng lệnh không đảm bảo rằng dữ liệu kết thúc ở đó nếu một đích khác được chỉ định trong tệp SQL.
pv mydump.sql.gz | gunzip | mysql -u root -p
your_database
. Câu trả lời được chấp nhận sử dụng phương pháp này.
Đối với các tệp nén bzip2 (.sql.bz2), hãy sử dụng:
bzcat <file> | mysql -u <user> -p <database>
HOẶC LÀ
pv <file> | bunzip2 | mysql -u <user> -p <database>
để xem thanh tiến trình.
Bạn có thể sử dụng -c, --stdout, --to-stdout
tùy chọn gunzip
lệnh
ví dụ:
gunzip -c file.sql.gz | mysql -u root -p database