Bagaimana cara memuat file sql.gz ke basis data saya? (pengimporan)


151

Saya mencoba mengimpor file SQL gzipped ke mysql secara langsung. Apakah ini cara yang benar?

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

14
Bahkan mengabaikan sisi gzip dari pertanyaan, panah Anda menunjuk ke arah yang salah ...
Matt Fletcher

Jawaban:


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

>akan menulis output dari mysqlperintah stdoutke dalam file myfile.sql.gzyang kemungkinan besar tidak seperti yang Anda inginkan. Selain itu, perintah ini akan meminta Anda untuk kata sandi "root" pengguna MySQL.


15
Sebagai praktik keamanan yang baik, saya akan meletakkan kata sandi saya di baris perintah, saya akan membiarkan mysql memintanya.
Prof. Moriarty

9
Atau bahkan lebih baik: buat ~/.my.cnfdengan kredensial. ;)
joschi

5
Sebagai @Prof. Moriarty menjelaskan, Anda dapat memodifikasi perintah untuk tidak menggunakan kata sandi via 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.
bafromca

6
Untuk sedikit mengoreksi komentar Prof.Moriarty, praktik keamanan yang baik adalah dengan tidak meletakkan kata sandi saya di baris perintah (di mana itu akan disimpan dalam sejarah, atau dilihat dari balik bahu Anda), dan biarkan MySQL yang memintanya. Bendera -p saja akan menyebabkan MySQL bertanya pada prompt untuk kata sandi.
George

4
+1 untuk sesuatu yang membuat dump database terkompresi
Dmitri DB

82

Untuk menampilkan bilah progres saat mengimpor file sql.gz, unduh pvdan 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


2
pvtampaknya berada di repo Ubuntu juga (setidaknya dalam 12,04 LTS itu), tetapi sekali lagi yang perlu Anda lakukan sudo apt-get install pvuntuk mendapatkannya. Terima kasih Banjer, ini sempurna untuk impor basis data besar!
toon81

Saya harus menjalankan pv mydump.sql.gz | gunzip | mysql -u root my_database_name. Itu karena saya mengimpor tabel dan saya tidak memiliki set kata sandi untuk pengguna root saya
Cristiano Mendonça

Di MAC,brew install pv
skor

54

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

1
Juga, mydb perlu dibuat sebelum mengimpor. Ini tidak membuat db untuk Anda.
Siddhartha

saya menemukan piping saya gunzippada 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.
Ryan Tuck

@RyanTuck Itu mendorong batas proses semacam ini :)
icc97

@Siddhartha Itu tergantung pada file dump sql. Terkadang mereka termasuk membuat pernyataan basis data.
rooby

@rooby itu masuk akal.
Siddhartha


5

Di macOS, saya menggunakan ini:

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

Masukkan kata sandi Anda, dan voila!


4

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.


2
Anda hanya perlu untuk memperpanjang perintah seperti: pv mydump.sql.gz | gunzip | mysql -u root -p your_database. Jawaban yang diterima menggunakan pendekatan ini.
bafromca

1

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.


0

Anda dapat menggunakan -c, --stdout, --to-stdoutopsi gunzipperintah

sebagai contoh:

gunzip -c file.sql.gz | mysql -u root -p database
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.