Pertanyaan Bagaimana cara memuat file sql.gz ke database saya? (pengimporan)


Saya mencoba mengimpor file SQL gzip ke mysql secara langsung. Apakah ini jalan yang benar?

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

118
2018-05-03 07:06




Bahkan mengabaikan sisi gzip dari pertanyaan itu, panahmu menunjuk ke arah yang salah ... - Matt Fletcher


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 bukan yang Anda inginkan. Selain itu, perintah ini akan meminta Anda untuk kata sandi pengguna MySQL "root".


186
2018-05-03 07:10



Sebagai praktik keamanan yang baik, saya akan menaruh kata sandi saya di baris perintah, saya akan membiarkan mysql memintanya. - Prof. Moriarty
Atau bahkan lebih baik: buat ~/.my.cnf dengan kredensial. ;) - joschi
Sebagai @Prof. Moriarty explans, Anda dapat memodifikasi perintah untuk tidak menggunakan kata sandi melalui zcat /path/to/file.sql.gz | mysql -u 'root' -p your_database. Ini akan mengetahui parameter terakhir adalah database yang ingin Anda gunakan, bukan kata sandi Anda. - bafromca
Untuk sedikit benar @ komentar Prof.Marcharty, praktik keamanan yang baik adalah melakukannya tidak masukkan kata sandi saya di baris perintah (di mana itu akan disimpan dalam sejarah, atau terlihat di atas bahu Anda), dan biarkan MySQL memintanya. Bendera -p saja akan menyebabkan MySQL menanyakan pada prompt untuk kata sandi. - George
+1 untuk sesuatu yang meninggalkan dump basis terkutuk dikompresi - Dmitri DB


Untuk menampilkan bilah kemajuan 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


66
2017-11-03 19:46



pv tampaknya di repositori Ubuntu juga (setidaknya di 12.04 LTS itu), tetapi sekali lagi yang perlu Anda lakukan sudo apt-get install pv untuk mendapatkan. Terima kasih Banjer, ini sangat cocok 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 kata sandi untuk pengguna root saya - Cristiano Mendonça
Di MAC, brew install pv - score


Cara termudah adalah unzip file database sebelum mengimpor. Juga seperti yang disebutkan oleh @Prof. Moriarty Anda tidak perlu menentukan kata sandi dalam perintah (Anda akan diminta kata sandinya). Perintah ini diambil dari webcheatsheet akan meng-unzip dan mengimpor database sekaligus:

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

47
2017-11-22 15:51



Juga, mydb perlu dibuat sebelum mengimpor. Ini tidak membuat db untuk Anda. - Siddhartha
Saya menemukan perpipaan saya gunzip pada file terkompresi 10GB menyebabkan impor saya membeku. tidak yakin apakah itu karena kendala memori atau sesuatu tetapi saya melakukan kesalahan di sisi melakukan satu langkah pada satu waktu di masa depan. - Ryan Tuck
@RyanTuck Itu mendorong batas-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


Jika Anda mendapatkan kesalahan dari zcat, di mana pesan kesalahan berisi nama file dengan akhiran tambahan .Z, lalu coba gunakan gzcat sebagai gantinya, seperti yang dijelaskan di https://stackoverflow.com/questions/296717/zcat-wont-unzip-files-persen


10
2017-07-08 13:59





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.


3
2018-05-03 11:28



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


Di macOS, saya menggunakan ini:

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

Masukkan kata sandi Anda, dan voila!


3
2017-11-28 07:41





Untuk bzip2 file terkompresi (.sql.bz2), gunakan:

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

ATAU

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

untuk melihat bilah kemajuan.


1
2017-08-01 15:25





Kamu bisa memakai -c, --stdout, --to-stdout opsi dari gunzip perintah

sebagai contoh:

gunzip -c file.sql.gz | mysql -u root -p database

0
2017-09-16 06:03