Vraag Hoe laad ik een sql.gz-bestand in mijn database? (Import)


Ik probeer een gzipped SQL-bestand rechtstreeks in mysql te importeren. Is dit de juiste manier?

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

118
2018-05-03 07:06


oorsprong


Zelfs als je de gzip-kant van de vraag negeert, wijst je pijl de verkeerde kant op ... - Matt Fletcher


antwoorden:


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

> zal de uitvoer van de mysql opdracht aan stdout in het bestand myfile.sql.gz wat hoogstwaarschijnlijk niet is wat je wilt. Bovendien zal deze opdracht u vragen om het wachtwoord van de MySQL-gebruiker "root".


186
2018-05-03 07:10



Als een goede beveiligingspraktijk zou ik mijn wachtwoord op de opdrachtregel zetten, ik zou mysql dit laten vragen. - Prof. Moriarty
Of nog beter: creëren ~/.my.cnf met de inloggegevens. ;) - joschi
Zoals @Prof. Moriarty explans, je kunt de opdracht wijzigen om het wachtwoord niet via te gebruiken zcat /path/to/file.sql.gz | mysql -u 'root' -p your_database. Het zal weten dat de laatste parameter de database is die u wilt gebruiken, niet uw wachtwoord. - bafromca
Om de opmerking van @ Prof.Moriarty enigszins te corrigeren, zou een goede beveiligingspraktijk zijn niet zet mijn wachtwoord op de commandoregel (waar het in de geschiedenis wordt opgeslagen, of over je schouder wordt bekeken) en laat MySQL hierom vragen. Alleen de vlag -p zal ervoor zorgen dat MySQL vraagt ​​om het wachtwoord. - George
+1 voor iets dat de verdomde database dump gecomprimeerd achterlaat - Dmitri DB


Als u een voortgangsbalk wilt weergeven tijdens het importeren van een sql.gz-bestand, downloadt u pv en gebruik het volgende:

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

In CentOS / RHEL kun je pv installeren met yum install pv.

In Debian / Ubuntu apt-get install pv.

In MAC, brew install pv


66
2017-11-03 19:46



pv lijkt ook in de Ubuntu repos te zitten (tenminste in 12.04 LTS is het), maar je moet het opnieuw doen sudo apt-get install pv om het te krijgen. Bedankt Banjer, dit is perfect voor importeren van grote databases! - toon81
Ik moest pv mydump.sql.gz | uitvoeren gunzip | mysql -u root mijn_database_name. Dat was omdat ik tabellen aan het importeren was en ik heb geen wachtwoord ingesteld voor mijn root-gebruiker - Cristiano Mendonça
In MAC, brew install pv - score


De eenvoudigste manier is om het databasebestand vóór het importeren uit te pakken. Ook zoals vermeld door @Prof. Moriarty u moet niet het wachtwoord opgeven in de opdracht (u wordt om het wachtwoord gevraagd). Deze opdracht is overgenomen van webcheatsheet zal de database in één keer uitpakken en importeren:

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

47
2017-11-22 15:51



Bovendien moet mydb worden gemaakt voordat het wordt geïmporteerd. Dit creëert niet de db voor jou. - Siddhartha
ik vond mijn leidingen gunzip op een gecomprimeerd bestand van 10 GB zorgde dat mijn import vastliep. niet zeker of dat te wijten is aan geheugenbeperkingen of iets anders, maar ik zou een fout maken aan de kant van het doen van een stap tegelijk in de toekomst. - Ryan Tuck
@RyanTuck Dat verlegt de grenzen van dit soort processen :) - icc97
@Siddhartha Dat hangt af van het sql dump-bestand. Soms bevatten ze het maken van database-instructies. - rooby
@rooby is logisch. - Siddhartha


Als je een foutmelding krijgt van zcat, waarin het foutbericht de bestandsnaam bevat met een extra achtervoegsel .Z, probeer het dan gzcat in plaats daarvan, zoals beschreven bij https://stackoverflow.com/questions/296717/zcat-wont-unzip-files-properly


10
2017-07-08 13:59





Controleer ook of er een USE-verklaring in het SQL-bestand staat. Het opgeven van de database op de opdrachtregel kan niet garanderen dat de gegevens daar eindigen als een andere bestemming in het SQL-bestand wordt opgegeven.


3
2018-05-03 11:28



Je hoeft alleen maar het commando uit te breiden zoals: pv mydump.sql.gz | gunzip | mysql -u root -p  your_database. Het geaccepteerde antwoord maakt gebruik van deze benadering. - bafromca


Op macOS gebruikte ik dit:

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

Voer je wachtwoord in en voila!


3
2017-11-28 07:41





Voor bzip2 gecomprimeerde bestanden (.sql.bz2), gebruik:

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

OF

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

om voortgangsbalk te zien.


1
2017-08-01 15:25





Je kunt gebruiken -c, --stdout, --to-stdout optie van gunzip commando

bijvoorbeeld:

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

0
2017-09-16 06:03