Jawaban:
zcat /path/to/file.sql.gz | mysql -u 'root' -p your_database
>
akan menulis output dari mysql
perintah stdout
ke dalam file myfile.sql.gz
yang kemungkinan besar tidak seperti yang Anda inginkan. Selain itu, perintah ini akan meminta Anda untuk kata sandi "root" pengguna MySQL.
~/.my.cnf
dengan kredensial. ;)
zcat /path/to/file.sql.gz | mysql -u 'root' -p your_database
. Itu akan tahu parameter terakhir adalah database yang ingin Anda gunakan, bukan kata sandi Anda.
Untuk menampilkan bilah progres saat mengimpor file sql.gz, unduh pv
dan gunakan yang berikut:
pv mydump.sql.gz | gunzip | mysql -u root -p
Di CentOS / RHEL, Anda dapat menginstal pv dengan yum install pv
.
Di Debian / Ubuntu apt-get install pv
.
Di MAC, brew install pv
pv
tampaknya berada di repo Ubuntu juga (setidaknya dalam 12,04 LTS itu), tetapi sekali lagi yang perlu Anda lakukan sudo apt-get install pv
untuk mendapatkannya. Terima kasih Banjer, ini sempurna untuk impor basis data besar!
brew install pv
Cara paling sederhana adalah dengan unzip file database sebelum mengimpor. Juga seperti yang disebutkan oleh @Prof. Moriarty Anda tidak harus menentukan kata sandi dalam perintah (Anda akan diminta kata sandi). Perintah ini yang diambil dari webcheatsheet akan di-unzip dan mengimpor database dalam sekali jalan:
gunzip < myfile.sql.gz | mysql -u root -p mydb
gunzip
pada file terkompresi 10GB menyebabkan impor saya membeku. tidak yakin apakah itu karena kendala memori atau sesuatu tetapi saya akan melakukan kesalahan di sisi melakukan satu langkah pada suatu waktu di masa depan.
Jika Anda mendapatkan kesalahan dari zcat
, di mana pesan kesalahan berisi nama file dengan akhiran ekstra .Z
, maka coba gunakan gzcat
sebagai gantinya, seperti yang dijelaskan di https://stackoverflow.com/questions/296717/zcat-wont-unzip-files-properly
Periksa juga apakah ada pernyataan USE dalam file SQL. Menentukan database pada baris perintah tidak menjamin bahwa data berakhir di sana jika tujuan yang berbeda ditentukan dalam file SQL.
pv mydump.sql.gz | gunzip | mysql -u root -p
your_database
. Jawaban yang diterima menggunakan pendekatan ini.
Untuk file terkompresi bzip2 (.sql.bz2), gunakan:
bzcat <file> | mysql -u <user> -p <database>
ATAU
pv <file> | bunzip2 | mysql -u <user> -p <database>
untuk melihat bilah kemajuan.
Anda dapat menggunakan -c, --stdout, --to-stdout
opsi gunzip
perintah
sebagai contoh:
gunzip -c file.sql.gz | mysql -u root -p database