Bir sql.gz dosyasını veritabanıma nasıl yüklerim? (İthal)


150

Doğrudan bir mzql içine bir gzip SQL dosyasını almaya çalışıyorum. Bu doğru yol mu?

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

14
Sorunun gzip tarafını görmezden gelseniz bile, okunuz yanlış yolu işaret ediyor ...
Matt Fletcher

Yanıtlar:


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

>mysqlKomutun çıktısını büyük olasılıkla istediğinizi olmayan bir stdoutdosyaya yazacaktır myfile.sql.gz. Ek olarak, bu komut MySQL kullanıcısının "root" şifresini soracaktır.


15
İyi bir güvenlik uygulaması olarak, şifremi komut satırına koyardım, mysql'nin sormasını isterim.
Prof. Moriarty

9
Ya da daha iyisi: ~/.my.cnfkimlik bilgileri ile oluşturun . ;)
joschi

5
@Prof olarak. Moriarty, şifrenizi kullanmamak için komutu değiştirebileceğinizi açıklar zcat /path/to/file.sql.gz | mysql -u 'root' -p your_database. Son parametrenin, şifreniz değil kullanmak istediğiniz veritabanı olduğunu bilecektir.
bafromca

6
Prof.Moriarty yorumuna @ hafifçe doğru için, iyi bir güvenlik uygulamasıdır olacaktır değil (o tarihte depolanamaz veya omuz üzerinden görülen alacak) komut satırında şifremi koydu ve MySQL bunun için soralım. -P bayrağı tek başına MySQL'in şifre isteminde bulunmasına neden olacaktır.
George,

4
Lanet veri tabanını sıkıştırılmış halde bırakan bir şey için +1
Dmitri DB

81

Bir sql.gz dosyasını içe aktarırken bir ilerleme çubuğu görüntülemek pviçin aşağıdakileri indirip kullanın:

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

CentOS / RHEL’de pv ile kurabilirsiniz yum install pv.

Debian / Ubuntu’da apt-get install pv.

MAC’te brew install pv


2
pvUbuntu depolarında da gözüküyor (en azından 12.04 LTS'de), ancak tekrar sudo apt-get install pvalmak için yapmanız gerekiyor. Teşekkürler Banjer, bu büyük veritabanı ithalatı için mükemmel!
toon81

Pv çalıştırmak zorunda mydump.sql.gz | gunzip | mysql -u root my_database_name. Çünkü tabloları ithal ediyordum ve kök kullanıcım için ayarlanmış bir şifrem yok
Cristiano Mendonça

MAC'de,brew install pv
skor

54

En basit yol, içe aktarmadan önce veritabanı dosyasını açmak. Ayrıca @Prof. Moriarty komutta şifreyi belirtmemelisiniz (şifre istenir). Web sayfasından alınan bu komut bir kerede veritabanını açacak ve içe aktaracaktır :

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

1
Ayrıca, içe aktarmadan önce mydb oluşturulması gerekir. Bu sizin için db oluşturmaz.
Siddhartha

benim boru buldum gunzipbir 10GB sıkıştırılmış dosya üzerinde benim ithalat donmasına neden oldu. Bunun hafıza kısıtlamaları veya bir şey yüzünden olup olmadığından emin değilim ama gelecekte bir adım atmanın yanında olacağım.
Ryan Tuck

@RyanTuck Bu tür işlemlerin sınırlarını zorluyor :)
icc97

@Siddhartha Bu, sql döküm dosyasına bağlıdır. Bazen veritabanı veritabanı ifadeleri içerirler.
Rooby,

@ Rooby mantıklı.
Siddhartha


5

MacOS'ta bunu kullandım:

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

Şifrenizi girin ve işte!


4

Ayrıca, SQL dosyasında herhangi bir USE ifadesi olup olmadığını kontrol edin. Veritabanını komut satırında belirlemek, SQL dosyası içinde farklı bir hedef belirtilmişse, verilerin orada biteceğini garanti etmez.


2
Sadece şöyle komutu uzatmak gerekir: pv mydump.sql.gz | gunzip | mysql -u root -p your_database. Kabul edilen cevap bu yaklaşımı kullanır.
bafromca

1

İçin bzip2 sıkıştırılmış dosyaları (.sql.bz2) kullanın:

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

VEYA

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

ilerleme çubuğunu görmek için


0

Komut -c, --stdout, --to-stdoutseçeneğini kullanabilirsinizgunzip

Örneğin:

gunzip -c file.sql.gz | mysql -u root -p database
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.