Acces Mysql refuzat - Cum să recuperez fișierul dump din mysqldump? Recuperare rapidă a dump-ului bazei de date mysql

./mysql -u -p H < db_dump-file

2018-12-04T00:00Z

2018-12-11T00:00Z

Când creăm un fișier dump cu mysqldump, acesta conține un script SQL mare pentru a recrea conținutul bazei de date. Așa că îl restaurăm rulând linia de comandă a clientului MySQL:

Mysql -uroot -p

(unde root este numele nostru de utilizator admin pentru MySQL) și după conectarea la baza de date avem nevoie de comenzi pentru a crea baza de date și a citi fișierul:

Creați baza de date new_db; folosește new_db; \. dumpfile.sql

Detaliile vor varia în funcție de opțiunile utilizate la crearea fișierului dump.

2018-12-18T00:00Z

Trebuie doar să rulezi asta:

mysql -p -u< db_backup.dump

Dacă dump-ul conține mai multe baze de date, ar trebui să omiteți numele bazei de date:

mysql -p -u< db_backup.dump

Pentru a rula aceste comenzi, deschideți un prompt de comandă (pe Windows) și cd-ul în directorul în care mysql.exe conține executabilul mysql.exe (s-ar putea să trebuiască să vă gândiți puțin, va depinde de modul în care ați instalat mysql, adică de sine stătătoare). sau ca parte a unui pachet precum WAMP). Când vă aflați în acest director, ar trebui să introduceți pur și simplu comanda.

25-12-2018T00:00Z

Ar trebui să fie la fel de simplu ca să rulați acest lucru:

Mysql -u -p< db_backup.dump

Dacă dump-ul are o singură bază de date, poate fi necesar să adăugați o linie în partea de sus a fișierului:

UTILIZARE ;

Dacă este un dump de multe baze de date, instrucțiunile de utilizare sunt deja acolo.

Pentru a rula aceste comenzi, deschideți un prompt de comandă (pe Windows) și cd-ul în directorul în care mysql.exe conține executabilul mysql.exe (s-ar putea să trebuiască să vă gândiți puțin, va depinde de modul în care ați instalat mysql, adică de sine stătătoare). sau ca parte a unui pachet precum WAMP). Odată ce vă aflați în acel director, puteți pur și simplu să tastați comanda așa cum am făcut-o mai sus.

2019-01-01T00:00Z

Comanda cu o singură linie pentru a restaura SQL-ul generat din mysqldump

Mysql -u -p E "sursa

2019-01-08T00:00Z

Folosind un fișier dump de 200 MB creat pe Linux pentru a restaura pe Windows cu mysql 5.5, am avut mai mult succes cu

Fișier sursă.sql

abordarea liniei de comandă mysql decât utilizarea

mysql< file.sql

abordarea liniei de comandă care provoacă o eroare din 2006 „serverul a plecat” (pe Windows)

În mod ciudat, serviciul creat în timpul instalării (mysql) se referă la un fișier my.ini care nu era acolo. Am copiat fișierul exemplu „mare” în my.ini, pe care îl modificasem deja cu creșterea recomandată.

Valorile mele

Max_allowed_packet = 64M interactive_timeout = 250 wait_timeout = 250

2019-01-15T00:00Z

Ca exemplu specific al răspunsului anterior:

Aveam nevoie să refac o copie de rezervă pentru a o putea importa/migra în SQL Server. Am instalat doar MySql, dar nu l-am înregistrat ca serviciu sau l-am adăugat la calea mea, deoarece nu trebuie să-l rulez.

Am folosit Windows Explorer pentru a plasa fișierul dump în C:\code\dump.sql. Apoi deschideți MySql din elementul de meniu Start. Am creat DB, apoi a rulat comanda sursă cu calea completă astfel:

Mysql> creați baza de date temp mysql> utilizați temp mysql> sursa c:\code\dump.sql

Dumpingul și restaurarea unei baze de date MySQL este destul de simplu și convenabil de făcut de la distanță prin SSH sau direct prin consola serverului. De la distanță, acest lucru se poate face folosind programele Putty/Kitty. De asemenea, puteți efectua exemplele de mai jos pe Windows rulând linia de comandă „ cmd‘. Mai jos sunt exemple despre cum să creați depozite de baze de date MySQL și apoi să le restaurați dacă este necesar, de exemplu pentru site-ul dvs. web, magazinul online sau alt proiect.

Crearea unui Dump de bază de date MySQL

Pentru a executa aceste comenzi, conectați-vă de la distanță la server prin SSH folosind unul dintre programele enumerate mai sus. După conectarea și autorizarea la server/găzduire, puteți introduce comenzile de mai jos.

# Faceți o copie de rezervă a unei baze de date în fișierul dump_file.sql mysqldump -uroot -p your_base > dump_file.sql # Pe Windows, cel mai bine este să creați un dump cu o comandă puțin diferită care să prevină # suprascrierea accidentală a liniilor de dump din cauza conversiei liniei noi caracterele „\r\n” în „\n” mysqldump -uroot -p your_base -r dump_file_utf8.sql # Dacă aveți nevoie de backup numai pentru tabele individuale, și nu pentru întreaga bază de date # (specificați numele tabelelor separate printr-un spațiu după numele bazei de date) mysqldump -uroot -p baza_voastra TABLE1 TABLE2 TABLE3 > dump_file.sql # Dacă trebuie să faceți copii de rezervă numai pentru structura bazei de date fără datele în sine mysqldump -uroot -p --no-data baza_voastra > dump_file.sql # Faceți o copie de rezervă a tuturor bazelor de date în fișierul current_date.gz mysqldump -uroot -p --all_databases | gzip -c > "data "+%Y-%m-%d"".gz # Backup, unde este creat un INSERT separat pentru fiecare înregistrare # și cu o indicație explicită a bazei de date care codifică UTF-8 mysqldump -uroot -p --default- character-set=utf8 baza_voastra --extended-insert=FALSE | gzip -c > „data „+%Y-%m-%d””.gz

# Faceți backup pentru o bază de date în dump_file.sql

mysqldump - uroot - p baza_voastra > dump_file . sql

# Pe Windows, cel mai bine este să creați un dump cu o comandă ușor diferită care împiedică

# suprascrie accidentală a liniilor de descărcare din cauza conversiei caracterelor newline „\r\n” în „\n”

mysqldump - uroot - p your_base - r dump_file_utf8 . sql

# Dacă aveți nevoie de backup numai pentru tabele individuale, și nu pentru întreaga bază de date

# (indicați numele tabelelor separate printr-un spațiu după numele bazei de date)

mysqldump - uroot - p baza_voastra TABLE1 TABLE2 TABLE3 > dump_file . sql

# Dacă trebuie să faceți backup numai pentru structura bazei de date fără datele în sine

mysqldump - uroot - p -- fără date baza dvs. > fișier_dump . sql

# Copiați toate bazele de date în fișierul current_date.gz

mysqldump - uroot - p -- all_databases | gzip - c > „data „+%Y-%m-%d”” . gz

# Backup, unde este creat un INSERT separat pentru fiecare intrare

# și specificând în mod explicit baza de date care codifică UTF-8

mysqldump - uroot - p - implicit - set de caractere = utf8 baza_voastra -- extins - insert = FALSE | gzip - c > „data „+%Y-%m-%d”” . gz

În exemplul de mai sus, utilitarul este folosit pentru a crea o copie de rezervă mysqldump, care este inclus cu mysql. Următorii sunt parametrii pentru crearea unei copii de rezervă a bazei de date, pe care o vom examina mai detaliat:

  • -u– parametrul specifică login-ul care va fi folosit pentru conectarea la baza de date. În exemplu, folosim login-ul root, care trebuie specificat în acest parametru fără spațiu! Drept urmare, arată ca -uroot
  • -p– parametrul indică faptul că trebuie să introduceți o parolă pentru autentificarea specificată. L-am lăsat gol, drept urmare parola va trebui introdusă după ce apăsați „Enter” la executarea comenzii. Cu toate acestea, puteți specifica parola chiar aici, ca în parametrul de conectare, fără spațiu după -p, totuși, această metodă nu este sigură, deoarece consola vă salvează comenzile într-un fișier jurnal și dacă nu îl ștergeți în mod regulat, poate fi văzut de un atacator.
  • baza_voastra– în loc de această linie din exemplu, trebuie să indicați numele real al bazei de date pentru care creați o copie de rezervă.
  • > – un operator care arată direcția de acțiune, i.e. de parcă ar indica că veți scrie din baza de date într-un fișier.
  • dump_file.sql– acesta este numele fișierului .slq în care trebuie să salvați baza de date. Este indicat cu un spațiu după operatorul „>”. Puteți specifica orice alt nume. De exemplu, pentru ca sistemul să insereze automat ora curentă în nume, trebuie doar să specificați o linie ca:

    „data „+%Y-%m-%d””

    „data „+%Y-%m-%d””


    după această linie din exemplu, extensia fișierului este indicată „ .gz‘. Ca rezultat, un fișier precum „ 2014-11-15.gz‘.

    Atenţie! Dacă specificați doar numele fișierului, acesta va fi salvat în același director relativ la care executați această comandă. Acestea. dacă vedeți așa ceva la promptul de comandă # , Unde root@dvs acesta este numele de conectare și server, fișierul va fi creat în director /Acasă. Pentru a modifica salvarea fișierului într-o cale diferită, specificați calea completă pentru salvarea fișierului în loc de nume, de exemplu: /var/www/backup/dump_file.sql.

  • În al doilea exemplu, în loc de operatorul „ > Se folosește „operator”. | „, ceea ce indică necesitatea de a rula o comandă gzip suplimentară cu parametrul „ -c„ care vă permite să împachetați imediat depozitul într-o arhivă și numai apoi să îl salvați într-un fișier precum „ 2014-11-15.gz„, după cum a raportat operatorul” > ‘.
  • Parametru -nu există date vă permite să descărcați numai structura bazei de date fără datele în sine. Destul de util în unele cazuri când datele nu sunt necesare.
  • Opțiuni –set-de-caractere-implicit=utf8Și –extended-insert=FALSE. Primul vă permite să specificați în mod explicit codificarea care este utilizată de această bază de date, evitând astfel salvarea bazei de date într-o codificare greșită, în loc de utf8, puteți specifica orice altă codificare, de exemplu cp1251. Al doilea parametru vă permite să specificați că trebuie creată o comandă INSERT separată pentru fiecare înregistrare la export. În unele cazuri, acest lucru poate fi necesar la restaurarea parțială a datelor dintr-un dump.
  • Restaurarea unei baze de date dintr-un fișier de descărcare MySQL

    Acum să ne uităm la procesul invers de restaurare a unei baze de date dintr-un fișier dump. Această acțiune este efectuată folosind programul mysql. Să ne uităm imediat la un exemplu.

Salutări, prieteni! 🙂

Astăzi am decis să continui conversația despre lucrul cu MySQL în consolă și să fiu atent la procedura de export a unei baze de date MySQL.

În acest articol voi vorbi despre cum să aruncați o bază de date MySQL, precum și despre cum să încărcați date din MySQL într-un fișier Excel și format csv.

Vom analiza diferite opțiuni pentru preluarea informațiilor din: crearea unui dump de una sau mai multe baze de date, exportarea datelor din tabele individuale și rezultate arbitrare SELECTAȚI cereri.

Vom vorbi, de asemenea, despre cum să scoateți date dintr-o bază de date MySQL în consola serverului și linia de comandă MySQL.

În acest articol, nu voi vorbi despre cum să exportați date folosind phpMyAdmin și alte instrumente vizuale.

În primul rând, pentru că există deja suficient material pe acest subiect pe Internet. În plus, este un material de înaltă calitate, pe care nu sunt dornic să îl copiez și să-l inserez.

Și, în al doilea rând, eu însumi am revizuit pe scurt procesul de ieșire a informațiilor dintr-o bază de date MySQL într-un fișier SQL într-unul dintre articolele mele, unde am vorbit despre .

Deci, dacă nu sunteți un dezvoltator profesionist sau un administrator de sistem care ar putea beneficia de informații despre lucrul cu consola și ați venit doar pentru instrucțiuni despre cum să exportați baza de date în phpMyAdmin, vă puteți limita la a citi informațiile din linkul de mai sus. .

Vreau să mă înțelegi corect: nu vreau să te jignesc în niciun fel, ci vreau doar să-ți petreci timpul cu beneficii maxime pentru afacerea ta și să obții ceea ce căutai.

Aici se încheie partea introductivă și trecem la o trecere în revistă a comenzilor consolei pentru crearea unui dump de bază de date MySQL, pe care am decis să le sortez după cantitatea de date salvate: pornind de la exportul întregii baze de date, terminând cu tabelele individuale și rezultatele interogări arbitrare.

Crearea unui dump de bază de date MySQL prin consolă

Aș dori să fac o mică precizare chiar de la început.

Dump-ul bazei de date este un fișier cu un set de comenzi SQL, care, atunci când este lansat, vă permite să creați baze de date și tabele, precum și să le completați cu informații. Dump-ul este necesar pentru cei care doresc să descarce o bază de date MySQL pentru a o copia pe un alt server sau într-unul existent.

De asemenea, dacă cineva nu știe, o copie de rezervă a unei baze de date MySQL este, în esență, un dump al acesteia făcut la o anumită perioadă de timp, ceea ce vă permite să restabiliți structura și datele bazei de date dacă este necesar.

Export de date- aceasta este pur și simplu extragerea de informații din tabele sub formă de text pentru a lucra în continuare cu editori de text sau grafice.

Prin urmare, comenzile pentru aceste acțiuni vor fi ușor diferite.

Pentru a crea un dump de bază de date, MySQL are un utilitar încorporat numit mysqldump, care trebuie utilizat în afara liniei de comandă MySQL în consola serverului sau în alt shell.

Deci, pentru cea mai simplă și mai comună opțiune - exportarea datelor dintr-o anumită bază de date în consola MySQL pentru a le transfera pe un alt server sau copiere internă, trebuie să rulați următoarea comandă:

Mysqldump -u username -p database_name > path_and_dump_file_name

Acest utilitar poate crea depozite de baze de date MySQL numai sub formă de fișiere cu comenzi SQL, așa că indiferent de extensia pe care o alegeți pentru fișierul dvs., conținutul acestuia va fi același în orice caz. Și nu uitați să verificați permisiunile de scriere ale directorului în care va fi localizat înainte de a exporta informații din MySQL, astfel încât fișierul să poată fi creat.

Dacă dintr-o dată trebuie să faceți un dump a tuturor bazelor de date de pe server, atunci utilizați următoarea opțiune de comandă:

Mysqldump -u nume de utilizator -p --all-databases > path_and_dump_file_name

Pentru a descărca doar câteva baze de date specifice, va trebui să apelați mysqldump cu următorii parametri:

Mysqldump -u username -p --databases database_name1, database_name2, ... > path_and_dumpfile_name

Ca urmare, în fiecare caz veți primi un dump al bazei de date MySQL care conține comenzi pentru crearea structurii tabelelor conținute (câmpuri, tipurile acestora, indexuri, chei etc.), precum și operațiuni de completare a acestora cu date.

Această opțiune este potrivită doar pentru restaurarea și copierea bazelor de date întregi.

Vom vorbi în continuare despre cum să faceți copii de siguranță ale anumitor tabele MySQL și să obțineți datele acestora într-o formă care poate fi citită.

Eliminarea unui tabel MySQL și exportarea datelor

Pentru a crea un dump a anumitor tabele de baze de date MySQL, vom avea nevoie de același utilitar mysqldump, apelat cu următorii parametri:

Mysqldump -u username -p database_name table_name1, table_name2, ... > calea_și_dumpfile_name

Când apelați mysqldump, puteți specifica tabelele necesare ca valoare a parametrului --Mese, când este utilizat parametrul --baze de date vor fi ignorate:

Mysqldump -u username -p --databases database_name1, database_name2 --tables table_name1, table_name2, ... > calea_și_dumpfile_name

Exemplul de mai sus va afișa următoarea eroare:

Mysqldump: Am primit eroare: 1049: Baza de date necunoscută „nume_base de date1”, la selectarea bazei de date

După cum puteți vedea, va fi utilizată doar cea mai recentă bază de date din listă. În principiu, acest comportament este destul de logic, deoarece Este posibil ca tabelele specificate să nu apară în toate bazele de date.

Bine, am primit un dump de tabele de baze de date MySQL. Poate fi folosit pentru a le restaura sau a le copia împreună cu structura.

Dar ce se întâmplă dacă trebuie doar să obțineți informațiile stocate în ele și, de preferință, într-o formă lizibilă, astfel încât să le puteți trimite managerului și să le vizualizați într-un editor obișnuit de text sau de foi de calcul? MySQL are instrumente și pentru asta.

Opțiunea de a apela la utilitate ne va ajuta să ne îndeplinim planurile mysql din consola cu anumiți parametri:

Mysql -u nume de utilizator -p nume_bază de date -e „SELECT * FROM nume_tabel”

Această comandă ne va permite să executăm o interogare în baza de date necesară și să trimitem rezultatul în consolă fără a merge la linia de comandă MySQL.

Ei bine, pentru a nu scoate date în consolă, ci pentru a le scrie într-un fișier, trebuie să completați comanda după cum urmează:

Mysql -u nume de utilizator -p -e „SELECT * FROM tablename” > cale_și_nume_fișier

Datorită acestor construcții, putem obține nu numai date stocate în toate câmpurile tabelului, ci și în unele specifice. Pentru a face acest lucru, trebuie doar să înlocuiți simbolul wildcards (*) cu cele necesare, separate prin virgule.

Ca rezultat, rezultatul va fi un fișier text obișnuit care va conține numele câmpurilor sub forma unui antet și informații despre acestea pentru toate înregistrările. Poate fi deschis într-un editor de text obișnuit, indiferent de rezoluția pe care o oferiți atunci când îl creați.

Dacă doriți să exportați date dintr-o bază de date MySQL în format xls sau csv, astfel încât fișierul rezultat să fie afișat corect în editorii de foi de calcul, atunci vă vom spune cum să faceți acest lucru puțin mai târziu :)

Crearea de copii de siguranță și scoaterea datelor dintr-o bază de date MySQL folosind interogări

Am vorbit despre cum să aruncați o bază de date MySQL - unul sau mai multe, precum și tabele individuale. Dar uneori, în practică, există cazuri când trebuie să exportați un set de date care nu se limitează la un singur tabel. Sau trebuie să selectați doar câteva date din tabel.

Dezvoltatorii de proiecte corporative se confruntă adesea cu acest lucru atunci când managerii le cer să furnizeze tot felul de date statistice. Sau atunci când trebuie să faceți backup pentru o anumită parte a tabelului pentru a o restaura rapid.

Pentru backup vom avea nevoie de același utilitar mysqldump, care va trebui numit astfel:

Mysqldump -u user_name -p database_name table_name --where "lookup" > path_and_dump_file_name

Ca urmare, vom primi un fișier cu comenzi SQL pentru a crea un tabel cu întreaga sa structură, care, după creare, va fi umplut cu informații selectate folosind o interogare de căutare.

Dacă trebuie doar să obținem datele stocate într-unul sau mai multe tabele, atunci va trebui să modificăm comanda folosită în cazul precedent atunci când recuperăm toate datele din tabel, doar cu câteva clarificări:

Mysql -u nume_utilizator -p -e „SELECT * FROM table_name WHERE lookup” > cale_și_nume_fișier

După cum înțelegeți, pe lângă diferitele clarificări specificate în cererea folosind directiva UNDE, puteți utiliza alte constructe SQL: A TE ALATURA, UNIUNE etc.

Puteți colecta orice statistică doriți :)

Aceeași acțiune poate fi efectuată și atunci când lucrați pe linia de comandă MySQL folosind următoarea comandă:

SELECT * FROM database_table WHERE cautare INTO OUTFILE "path_and_file_name";

Această comandă este concepută special pentru a crea fișiere cu rezultate de eșantionare. Mai mult, rezultatele pot fi exportate nu numai în fișiere, ci și scrise în variabile, iar datele de ieșire pot fi formatate în diferite moduri.

Dacă este cazul dvs. de mai sus, puteți găsi o listă completă de parametri și opțiuni pentru apelarea acestei comenzi aici - https://dev.mysql.com/doc/refman/5.7/en/select-into.html

Pentru a încheia scurta mea excursie în mysqldump, aș dori să ofer o variantă de apelare a unei comenzi cu o listă de parametri pentru a crea un dump optimizat al bazei de date și tabelelor MySQL, restabilind baza de date și tabelele individuale din care va dura mai puțin timp decât cu un apel obișnuit:

Mysqldump -u username -h host_or_IP_MySQL_server -p --no-autocommit --opt database_name > path_and_dump_file_name;

De dragul experimentului, am folosit această opțiune pentru a descărca o bază de date MySQL de 143 MB. Restaurarea ulterioară a durat 59 de secunde față de 1 minut și 3 secunde când baza de date a fost restaurată dintr-un dump făcut prin apelarea mysqldump fără parametri speciali.

Sunt de acord că acesta este un lucru mic. Dar acest lucru este doar în cazul unei cantități date de date. Dacă utilizați această tehnică atunci când creați un dump mai mare de 1 GB, diferența va fi mai semnificativă.

Dacă întâmpinați o astfel de situație, nu uitați să arhivați mai întâi dump-ul bazei de date MySQL. Cel mai bun este tar.gz. Atunci recuperarea va dura și mai puțin timp.

Exportați date din MySQL în fișiere Excel și csv

Nu degeaba am combinat informații despre ieșirea informațiilor din MySQL în aceste două formate într-un singur bloc, pentru că... sunt foarte asemănătoare, sunt folosite aproximativ în același mod (pentru a structura informațiile sub formă de tabele) și se vor apela aceleași comenzi pentru export.

După cum știți, singura diferență semnificativă dintre aceste formate este că extensiile xls și xlsx au fișiere create în Microsoft Office Excel, care funcționează doar sub Windows, în timp ce fișierele csv sunt mai universale și operațiunile cu ele sunt posibile în multe editoare.

Acest lucru nu înseamnă că xls nu se va deschide nicăieri, cu excepția Microsoft Office Excel. Același OpenOffice confirmă contrariul.

Dar pentru ca acest lucru să fie posibil, acest suport trebuie să fie prezent în produsul software. Fișierele csv pot fi citite chiar și într-un editor de text obișnuit, cum ar fi Notepad, dar acest formular nu va fi pe deplin lizibil.

Permiteți-mi să încep cu faptul că puteți exporta rezultatele interogărilor SQL doar în xls sau csv, cu care am învățat să lucrăm mai devreme, deoarece va fi imposibil să scoateți întreaga bază de date într-un singur fișier într-o singură operațiune.

În primul rând, acest lucru nu este optim, deoarece... este puțin probabil ca un astfel de fișier să se deschidă dacă există un volum mare de informații stocate în baza de date. Și, în al doilea rând, nu este clar cum să împărțiți informațiile din interiorul fișierului în tabele și câmpuri.

Nu, este, desigur, posibil să faceți acest lucru, dar este puțin probabil să se facă cu o singură comandă și, în general, este puțin probabil ca cineva să facă acest lucru în consolă. Cred că în aceste scopuri veți avea nevoie de software special sau măcar de un script.

Dacă știți brusc cum puteți exporta informații din întreaga bază de date MySQL într-unul sau mai multe fișiere xls din consolă simultan, atunci scrieți despre asta în comentarii. Cred că citirea despre asta va fi utilă pentru mulți.

Deci, dacă vorbim despre cum să exportăm date din MySQL în xls și csv, atunci acest lucru se poate face direct în consola serverului prin utilitar mysql sau în, lucrarea cu care v-am prezentat în articolul meu anterior.

Să începem în ordine.

Puteți exporta date dintr-o bază de date MySQL în formatele csv și xls direct în consola serverului folosind următoarele comenzi.

Pe Linux sisteme:

Mysql -u nume de utilizator -d nume_bază de date -p -e „SELECT * FROM database_table;” | sed "s/"/\"/;s/\t/\",\"/g;s/^/\"/;s/$/\"/;s/\n//g" > calea_și_numele_fișierului. csv

În principiu, dacă este absolut necesar, puteți utiliza această comandă pentru a exporta datele MySQL într-un fișier Excel. Dar, să fiu sincer, nu m-am ocupat de asta în practică și nu am idee ce va ieși în cele din urmă, pentru că... Momentan lucrez pe Windows. Dacă utilizați această comandă sub Linux, vă rugăm să scrieți în comentarii despre rezultatele muncii dvs. Cred că informațiile vor fi de interes pentru toată lumea.

Pe Windows:

Din păcate, exportul datelor din tabelele MySQL în csv folosind comanda de mai sus nu va funcționa în acest caz, deoarece Windows, spre deosebire de Linux, nu are o comandă în consolă încorporată pentru lucrul cu fire, cum ar fi sed în Linux.

Desigur, îl puteți instala, dar este prea multă bătaie de cap. Alternativ, puteți utiliza CygWin— Emulator de consolă Linux pentru sisteme Windows.

Este bine dacă îl aveți deja instalat. În caz contrar, exportarea datelor din baza de date MySQL folosind metoda aleasă ne va aduce prea multe probleme.

Dar extragerea informațiilor într-un fișier xls este la fel de ușor ca 5 copeici :) Este foarte ușor să-l lansez în următorul mod, pe care l-am încercat personal:

Mysql -u nume utilizator -d nume_bază de date -p -e „SELECT * FROM database_table;” > cale_și_nume_fișier.xls

Acest fișier s-a deschis în Microsoft Office Excel fără nicio problemă. Singurul lucru este că la deschiderea acestuia, pe ecran a fost afișat un mesaj care avertizează că formatul real al fișierului care se deschide diferă de extensia specificată.

Dar la confirmarea acțiunii, documentul s-a deschis fără dificultate - toate informațiile au fost împărțite în celule în forma în care au fost stocate în tabelul însuși.

Nu știu, poate dacă efectuați acțiuni specifice în Microsoft Office Excel, vor apărea probleme în viitor, nu am săpat atât de adânc. Cel puțin când m-am uitat prin date în mod normal, nu am văzut nimic neobișnuit.

Dacă întâmpinați probleme în timp ce utilizați fișierul xls exportat din MySQL, fie în acest program, fie în altele, vă rugăm să-mi spuneți în comentarii.

Folosind metoda descrisă mai sus, puteți exporta conținutul unei baze de date MySQL într-un fișier csv, în principiu. Dar apoi datele din diferite câmpuri ale tabelului vor fi scrise în masă, fără delimitatori, care s-ar putea să nu fie afișate bine în diverse programe de lucru cu tabele, care de obicei funcționează cu fișiere csv.

OpenOffice, apropo, nu-i pasă :) A delimitat automat informațiile obținute în modul în care am exportat conținutul bazei de date MySQL în xls. Nu știu cum o face, dar recomand să-l folosească :)

Ei bine, același Microsoft Office Excel a afișat toate informațiile corespunzătoare unei înregistrări din tabel, scriind-o într-o celulă fără delimitatori. Cred că și alți editori de tabele vor face același lucru.

Prin urmare, atunci când exportați o bază de date MySQL în fișiere csv, trebuie să faceți acest lucru prin separarea informațiilor cu caractere speciale care sunt înțelese de editori.

Și apoi am abordat treptat cea de-a doua metodă de export a datelor MySQL în csv și xls, și anume utilizarea liniei de comandă MySQL.

Deci, pentru a exporta datele MySQL într-un fișier csv în acest fel, avem nevoie de următoarea comandă:

SELECTAȚI * FROM database_table INTO OUTFILE "path_and_file_name.csv" CÂMPURI TERMINATE CU "," ÎNCHIS DE LINII """ TERMINATE CU "\n";

Ca urmare a execuției sale, veți primi un fișier csv în calea pe care ați specificat-o la apelare, care se va deschide corect în majoritatea editoarelor moderne de foi de calcul. Pentru orice eventualitate, vă reamintesc că trebuie să rulați această comandă numai după conectarea la baza de date MySQL.

Această comandă este excelentă și pentru exportul datelor MySQL într-un fișier xls pentru afișare corectă în Microsoft Office Excel. Numai că în acest caz nu avem nevoie de separatori, pentru că vor interfera cu împărțirea informațiilor în celule:

SELECTAȚI * FROM database_table INTO OUTFILE "path_and_file_name.xls";

Cu toate acestea, în practică, nu totul este atât de simplu pe cât am descris. În timp ce rulați comanda, este posibil să întâlniți următoarea eroare în consolă care împiedică finalizarea exportului:

EROARE 1290 (HY000): Serverul MySQL rulează cu opțiunea --secure-file-priv, așa că nu poate executa această instrucțiune

Este cauzată de faptul că serverul dvs. MySQL a fost pornit cu opțiunea --secure-file-priv. Personal, am întâlnit această problemă din cauza faptului că pentru a lucra în consolă folosesc distribuția MySQL inclusă în kitul WAMP OpenServer, care, la rândul său, lansează serverul MySQL în acest fel.

Există două moduri de a rezolva problema:

  • Modificați parametrii de pornire a serverului MySQL
  • Schimbați calea către fișierul final de export MySQL

Prima metodă mi s-a părut prea complicată, pentru că... Ar trebui să mă aprofundez în configurația OpenServer, care nu a fost scrisă de mine cu toate circumstanțele care au urmat 🙂 Prin urmare, am decis să iau a doua cale. Dacă întâmpinați o problemă similară, repetați după mine.

Mai întâi trebuie să accesați linia de comandă MySQL și să rulați una dintre următoarele comenzi:

AFIȘAȚI VARIABILELE CA „secure_file_priv”; SELECTAȚI @@GLOBAL.secure_file_priv;

Rezultatul executării ambelor va fi valoarea variabilei globale MySQL secure_file_priv, care conține calea către directorul prin care pot fi efectuate operațiunile de export și import de date MySQL (în viitor, un link către un articol despre importul de date).

Acestea. atunci când utilizați comenzi INCARCA DATEȘi SELECTAȚI... ÎN OUTFILE fișierele exportate și importate pot fi localizate numai în acest director.

În cazul meu, această variabilă a fost în general setată la NUL, deoarece Eu, așa cum am spus deja, folosesc utilitare MySQL din distribuția inclusă în OpenServer pentru a lucra în consolă. Această valoare a indicat că operațiunile de export și import de date MySQL folosind comenzile specificate au fost complet închise.

După cum s-a dovedit mai târziu, aceasta este o situație comună când se utilizează servere WAMP și MAMP în cutie.

Din păcate, în cazul meu, nu a fost posibilă utilizarea metodelor obișnuite de modificare a valorilor variabilelor globale MySQL:

SET nume_variabilă = valoare;

Drept urmare, am văzut doar următoarea eroare în consolă:

EROARE 1238 (HY000) la linia 1: variabila „secure_file_priv” este o variabilă numai pentru citire.

Ca rezultat, pentru a modifica valoarea unei variabile secure_file_privși deschid operațiunile de export și import, trebuia să intru în fișierul de configurare MySQL mysql.ini, care se află în directorul rădăcină al distribuției MySQL, sau poate fi accesat în alt mod dacă MySQL este inclus cu WAMP/LAMP/ Construire server MAMP.

Apropo, dacă doriți să schimbați calea către directorul spool de schimb de fișiere, va trebui să faceți același lucru.

În cazul meu, această variabilă exista deja în config, doar sub formă comentată:

Secure-file-priv = „%dprogdir%\\userdata\\temp”

Dacă nu îl aveți, atunci scrieți-l de la zero în secțiune (cel putin pentru mine era situat acolo).

L-am decomentat și am decis să îl folosesc în forma în care a fost scris. Acestea. când exportați date din MySQL și le import înapoi, fișierele mele vor fi acum stocate într-un director c:\openserver\userdata\temp\.

După ce ați schimbat configurația (oricare, apropo), nu uitați să reporniți serverul sau un serviciu separat ale cărui setări le-ați editat, dacă este posibil, pentru ca modificările să intre în vigoare!

Pentru a fi sigur, după repornirea serverului MySQL, afișați din nou variabila secure_file_privși copiați valoarea acesteia în clipboard.

Și acum trebuie să apelăm comanda ca la început, numai înainte de numele fișierului în care vor fi salvate informațiile din baza de date MySQL, scrieți calea stocată în variabila pe care o modificăm în următoarea formă:

SELECTAȚI * FROM database_table INTO OUTFILE "secure_file_priv_value\file_name.csv";

După aceasta, exportul datelor din MySQL a funcționat în cazul meu.

Punct important! Dacă lucrați cu MySQL pe Windows, atunci nu uitați să schimbați „\” în „/” atunci când specificați calea către fișier, altfel eroarea va fi --secure-file-priv va continua să apară.

Aceasta încheie articolul despre cum să descărcați o bază de date MySQL și tabelele acesteia, precum și datele de ieșire din tabelele MySQL în diferite formate. Scrieți-vă recenziile în comentarii și împărtășiți tuturor opțiunile de script pe care le utilizați cel mai des în practică.

Dacă ți-a plăcut articolul, poți să-i mulțumești autorului republicând articolul pe rețelele sociale sau financiar folosind formularul de mai jos, astfel încât să poți plăti pentru găzduirea de bază.

Succes tuturor și ne revedem! 🙂

P.S.: dacă aveți nevoie de un site web sau trebuie să faceți modificări unuia existent, dar nu există timp sau dorință pentru asta, îmi pot oferi serviciile.

Peste 5 ani de experiență dezvoltarea site-ului profesional. Lucreaza cu PHP

Dump-ul bazei de date MySQL este familiar oricărui webmaster. Acest lucru nu este surprinzător, deoarece această procedură este efectuată ca parte a unei copii de rezervă sau a transferului unei baze de date pe o altă găzduire.

Prin urmare, a ști cum să arunci o bază de date MySQL este importantă pentru orice dezvoltator web. Ce este? Acesta este un fișier care conține instrucțiuni în limbaj SQL, datorită căruia se creează o copie exactă a bazei de date atât în ​​conținut, cât și în structură. În ce situații ar trebui să aruncați baza de date MySQL:

  • Transferarea unei baze de date pe un alt server

Poate fi necesară o descărcare dacă intenționați să vă transferați baza de date pe o altă găzduire. Cu ajutorul acestuia, puteți recrea o copie exactă a vechii baze de date fără nicio dificultate.

  • Backup de bază de date

Găzduire virtuală a site-urilor web, care include backup-uri zilnice. Backup-urile regulate ale datelor vă vor scuti de mult efort și nervi în cazul unor situații neprevăzute. Un experiment nereușit cu un site sau o prăbușire a serverului poate duce la pierderea întregii baze de date și doar o descărcare în timp util vă va ajuta în această situație. Desigur, nu poate fi stocat pe același server ca baza de date principală, deoarece altfel veți pierde toate informațiile fără posibilitatea recuperării acesteia.

Cum să aruncați o bază de date MySQL?

Există mai multe moduri de a crea un dump, iar mai jos ne vom uita la principalele opțiuni:

  • Efectuarea unui dump folosind consola MySQL

În acest caz, pentru a crea un dump de bază de date, utilizați linia de comandă sau consola MySQL, unde trebuie să introduceți comanda mysqldump -uuser -ppass db_name > file_to_save. În acest caz, user este numele utilizatorului bazei de date cu drepturi suficiente pentru a crea un dump, pass este parola pentru baza de date, db_name este numele bazei de date dorite și în loc de file_to_save, trebuie să specificați numele fișierului unde va fi salvată groapa.

După introducerea corectă a comenzii, în locația specificată va apărea un fișier cu extensia .sql, care este un dump al bazei de date. Această metodă este cea mai universală și populară printre utilizatorii sistemelor Unix, de exemplu, Ubuntu, dacă brusc trebuie să transferați MySQL pe un alt server. În același caz, dacă nu cunoașteți comenzile consolei, veți avea nevoie de software suplimentar.

  • Efectuarea unui dump de bază de date folosind phpMyAdmin

Dacă preferați să utilizați software suplimentar, puteți descărca baza de date folosind PHP folosind, de exemplu, phpMyAdmin. Pentru a face acest lucru, urmați acești pași:

  1. Conectați-vă la phpMyAdmin.
  2. Selectați baza de date dorită din lista generală.
  3. Conectați-vă la baza de date selectată.
  4. După autorizare, coloana din stânga va conține baza de date în sine și informațiile de service care se referă la aceasta. Acum trebuie să reselectați baza de date.
  5. Accesați fila „Export”, apoi activați unele setări, și anume:

    Adăugați DROP TABLE/VIEW/PROCEDURE/FUNCTION/EVENT

    Această opțiune vă va permite să restaurați în siguranță baza de date MySQL dintr-un dump în viitor. Toate tabelele care au aceleași nume vor fi mai întâi șterse, adică comanda dpop va fi executată și apoi înlocuită cu altele similare din dump. Drept urmare, vă veți proteja de crearea de tabele duplicate și, ca urmare, de operarea incorectă a bazei de date.

    Pachet cu fermoar

    Activarea acestei opțiuni va asigura că dump-ul dvs. DB este arhivat și veți ajunge cu un fișier cu extensia .zip. Acest lucru vă va permite să salvați rapid și corect depozitul chiar și cu o viteză scăzută a conexiunii.

  6. Primiți un dump de bază de date gata de utilizat. Dacă totul a fost făcut corect, atunci veți avea o arhivă care conține un fișier cu extensia .sql - un dump al bazei de date de care aveți nevoie.

Acum știi cum să faci un dump MySQL dacă brusc trebuie să transferi baza de date pe un alt server sau apare orice altă situație când o copie de rezervă a bazei de date poate fi utilă. Desigur, există multe mai multe moduri de a crea un dump, pe lângă cele descrise mai sus. Dar chiar și cunoașterea celor mai simple opțiuni și utilizarea regulată a acestora în practică vă va permite să vă simțiți mai încrezători în orice situație neprevăzută, deoarece va fi suficient să implementați pur și simplu un dump MySQL și să restaurați rapid toate bazele de date.

Dacă decideți să cumpărați un server dedicat de la compania noastră, atunci vi se oferă 100 GB pe un server de backup la distanță, unde puteți configura backup automat al site-urilor și bazelor de date. În acest caz, veți avea întotdeauna un dump MySQL proaspăt.

În cazul în care întâmpinați în continuare dificultăți la crearea unui dump și la schimbarea unui server sau a găzduirii, puteți contacta personalul de asistență tehnică RigWEB, iar acesta vă va răspunde la orice întrebări care sunt de competența lor. Dacă dintr-un motiv oarecare nu puteți face acest lucru singur, specialiștii noștri vă vor transfera site-ul dvs. de pe o altă găzduire pe a noastră gratuit. De asemenea, vom asigura backup-uri regulate și furnizarea în timp util a unor copii actualizate ale datelor dvs., dacă este necesar. Folosind găzduirea profesională RigWEB, poți fi sigur de protecția maximă a proiectului tău împotriva oricăror surprize!

Probabil ați fost nevoit să importați depozitele bazei de date de mai multe ori. Și în ciuda trivialității acestei sarcini, apar adesea întrebări și uneori probleme asociate cu aceasta. Mai jos este tot codul de care aveți nevoie pentru a aplica rapid un dump al bazei de date din linia de comandă.

SETĂ NUMELE utf8; DROP BAZĂ DE DATE `mydb`; CREAȚI BAZĂ DE DATE `mydb` SETUL DE CARACTERE DEFAULT utf8; UTILIZAȚI `mydb`; SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO"; SET autocommit=0; SET străină_key_checks=0; SET unique_checks=0; SOURCE /path/to/db_dump.sql; COMIT; SET autocommit=1; SET străine_key_checks=1; SET unique_checks=1;

Aceste comenzi vă vor permite să importați rapid un dump de bază de date și să evitați problemele. Mai mult, unele dintre aceste probleme nu sunt rezolvate nici măcar de clienții mysql obișnuiți, cum ar fi phpMyAdmin și alții.

Să încercăm să privim acest cod în ordine.

SETĂ NUMELE utf8; spune că schimbul de date va avea loc în codificare UTF-8 și aici se află fișierul dump sursă al bazei de date și asta va avea baza de date finală.

DROP BAZĂ DE DATE `mydb`;Și CREAȚI BAZĂ DE DATE `mydb` SETUL DE CARACTERE DEFAULT utf8; a executa distrugere baza de date și crearea sa ulterioară cu codificarea implicită UTF-8. Este clar că acest lucru va șterge toate tabelele și datele din ele, dar acest lucru ne va da încredere că baza de date rezultată va corespunde pe deplin cu datele din fișierul de descărcare.

UTILIZAȚI `mydb`; indică faptul că această bază de date ar trebui utilizată pentru toate comenzile din fișierul dump (verificați fișierul dump pentru prezența acestei directive, indicând o altă bază de date pentru a evita confuzia).

SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO"; dezactivează creșterea contorului de auto-increment atunci când se scrie o valoare de 0 într-un câmp de auto-increment. În mod implicit, când se scrie o valoare NULL sau 0 într-un astfel de câmp, acesta este incrementat automat. Și deși a avea o valoare de 0 într-un câmp de auto-incrementare nu este cea mai bună practică, uneori se întâmplă totuși să existe astfel de linii în dump (am întâlnit ceva similar într-un dump de la Magento). De asemenea, este de remarcat faptul că mysqldump include această directivă în mod implicit în depozitele sale de ceva timp.

SET autocommit=0;înainte de a încărca depozitul și COMIT; după aceasta, accelerează execuția INSERT-urilor pentru tabelele InnoDB, deoarece atunci când modul auto-commit este activat, jurnalele sunt salvate pe disc cu fiecare INSERT. Poate ajuta la rularea gropilor mari.

SET străină_key_checks=0; cea mai evidentă opțiune, fără de care majoritatea depozitelor nu ar putea fi aplicate deloc. Dezactivează verificările cheilor străine, permițând ca datele să fie scrise în orice ordine, inclusiv cu referințe circulare între cheile străine. Această opțiune accelerează și importul de descărcare.

SET unique_checks=0; dezactivează verificările de unicitate pentru cheile secundare, ceea ce din nou poate accelera procesul de import.

Și, în sfârșit, echipa principală pentru care toate acestea au fost planificate - SOURCE /path/to/db_dump.sql; importă direct un dump de bază de date mysql din fișierul specificat. Calea către fișier poate fi absolută sau relativă la directorul din care ați accesat consola mysql.

Și după ce importul este finalizat, restabilim valoarea steagurilor, deși acest lucru nu este necesar, deoarece comanda A STABILITîn mysql, în mod implicit, modifică valorile variabilelor numai în contextul sesiunii curente.

  • Serghei Savenkov

    un fel de recenzie „scurtă”... de parcă s-ar grăbi undeva