Cum se configurează smartphone-uri și PC-uri. Portal informativ
  • Acasă
  • Windows 10
  • Deversăm baza de date MySQL și exportăm datele în consolă.

Deversăm baza de date MySQL și exportăm datele în consolă.

./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 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 se vor schimba în funcție de opțiunile utilizate la crearea fișierului de descărcare.

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 Linie de comanda(pe Windows) și cd în directorul în care mysql.exe este 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ă independent 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 rularea acestui:

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 la asta, 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

Comandă 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 restabili 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

La fel de exemplu concret raspuns anterior:

Aveam nevoie să refac copie de rezervă ca să-l pot importa/transfer î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.

obisnuiam Windows Explorer pentru a pune fișierul meu 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

De cele mai multe ori, vă puteți gestiona cu ușurință baza de date din instrumente web precum PHPMyAdmin. Din păcate, există momente când este necesară restaurarea un numar mare de date. Acest lucru nu poate fi realizat prin PHPMyAdmin din afara PHP (nici timp maxim scriptul nu funcționează sau nu poate fi încărcat arhivă mare din baza de date).

Folosind MySQL din linia de comandă

Dacă utilizați MySQL pe Linux sau MS Windows, puteți utiliza linia de comandă pentru a efectua majoritatea sarcinilor. Dacă utilizați MS Windows, asigurați-vă că calea către fișiere executabile Linia de comandă este inclusă în calea sistemului. În caz contrar, va trebui să introduceți calea completă către fiecare comandă.

Cum se face backup unei baze de date MySQL

MySQL oferă un utilitar numit „mysqldump”. Practic, acest instrument creează un fișier plat care conține instrucțiuni MySQL pentru a repara baza de date. Iată câteva exemple de utilizare a mysqldump:

Crearea unui backup simplu al bazei de date

# mysqldump -u username -p DB_name > your_file.sql

Aceasta creează un fișier care conține toate instrucțiunile MySQL pentru crearea tabelelor și restaurarea datelor în baza existenta date. Dacă baza de date țintă conține tabele cu aceleasi nume, vor fi suprascrise. Dacă doriți să tabele existente, care va fi aruncat și reutilizat, apoi utilizați opțiunea „add-drop-table”:

# mysqldump --add-drop-table -u username -p DB_name > your_file.sql

De asemenea, puteți alege aceasta ca alternativă:

# mysqldump --add-drop-databases -u username -p DB_name > your_file.sql

Faceți backup pentru mai multe baze de date

Puteți face o copie a mai multor baze de date într-un singur fișier folosind opțiunea de bază de date:

# mysqldump -u nume de utilizator -p --databases baza_de_date_voastra1 baza_de_date_voastra2 baza_de_date_voastra3 > fisierul_dvs.sql

Crearea unei copii de rezervă a tuturor bazelor de date poate fi realizată utilizând opțiunea toate bazele de date:

# mysqldump -u nume de utilizator -p --all-databases > your_file.sql

Copiere de rezervă a tabelelor InnoDB

Dacă baza de date are coloane InnoDB, va trebui să dezactivați integritatea referențială atunci când restaurați datele. Din păcate, acest lucru nu se poate face folosind utilitarul mysqldump. Pentru a face acest lucru, trebuie să deschideți fișierul în sine și să adăugați:

SETARE FOREIGN_KEY_CHECKS = 0;
... Și adăugați următoarele la sfârșitul fișierului:
SETARE FOREIGN_KEY_CHECKS = 1;

Comprimarea fișierelor Dump MySQL

Dacă utilizați mysqldump în Shell Linux, puteți comprima prin Gzip pentru a comprima fișierul dump (presupunând că aveți gzip instalat):

# mysqldump -u username -p your_database_name | gzip -c fișierul_dvs.sql.gz

Restaurare dintr-o copie de rezervă MySQL

Pentru a restabili o copie de rezervă creată cu mysqldump, va trebui să utilizați comanda MySQL. Dacă fișierul dvs. de descărcare MySQL nu conține „Creare Database” o, puteți utiliza următoarea comandă:

# mysql -u username -p your_database_name< your_file.sql

Dar, dacă acest lucru reușește, utilizați aceeași comandă fără a specifica numele bazei de date:

# mysql -u nume de utilizator -p< your_file.sql

Mai mult informatii detaliate despre mysqldump poate fi găsit pe site-ul oficial MySQL.

Este ciudat, dar este destul de dificil să găsești aceste informații pe Internet. O grămadă de tot felul de recomandări de stânga. Dar, de fapt, totul este simplu. Puteți restabili dump-ul cu comanda:

# mysql-sus< mysql_dump.sql.

În schimb, înlocuiți numele de utilizator, eu personal fac recuperarea de la root. Și în mysql_dump, sql, de fapt, dump-ul este făcut mysqldump utilitate. Opțiunea -p indică autorizarea cu o parolă; după ce apăsați enter vi se va cere o parolă. Asta e tot, de fapt. Puteți face un dump cu comanda:

# mysqldump-u root -p -f nume_bază de date > fișier_cu_dump.sql

Aici parametrul -f database_name specifică numele bazei de date pe care o salvăm. Dacă aveți nevoie de totul, îl înlocuim cu --toate-bazele de date. Această opțiune va indica salvarea tuturor bazelor de date pe server. Pentru a nu introduce parola de fiecare dată, o puteți specifica direct în comandă (acest lucru este necesar dacă faceți un dump cron dintr-un script), totuși, din punct de vedere al securității, aici apar întrebări, mai ales dacă parola este rădăcină pentru mușchi. Acum, dacă muşchiul ar fi înţeles măcar parolele md5... Totuşi, nu e un fapt că el nu înţelege, eu doar poate că nu ştiu :)

Autor

Alex Razgibalov

Un om nebun, de vârstă nedeterminată, care se bucură de o amăgire de persecuție. Neîncrezător patologic, egoist, autoritar. Diagnostice secundare - programator și asistent. Deține Limba engleză la un nivel de conversație de rahat. De asemenea, familiarizat cu alte limbi. Este interesat de toată lumea și de toate, datorită faptului că cunoștințele sale în orice domeniu sunt superficiale și superficiale. Personajul este incontrolabil. Forță - 55 de grade.

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 IMPLICIT utf8; UTILIZAȚI `mydb`; SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO"; SET autocommit=0; SET foreign_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ă ne dăm seama acest codîn ordine.

SETĂ NUMELE utf8; spune că schimbul de date va avea loc în codificare UTF-8 și acolo se află dosarul original descărcarea 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, aceasta este incrementată automat. Și, deși având o valoare de 0 într-un câmp auto-incremental, nu este cea mai buna practica, uneori se mai întâmplă să existe astfel de linii în dump (am întâlnit ceva asemănător î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 gunoiul ș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 foreign_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, ceea ce permite ca datele să fie scrise în orice ordine, inclusiv cu legături circulare prin chei externe. 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 de bază, de dragul căreia toate acestea au fost planificate - SOURCE /path/to/db_dump.sql; importă direct dump-ul bazei 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.

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 bazei de date Date MySQL.

În acest articol voi vorbi despre cum să faci o groapă baze de date MySQL, precum și încărcarea datelor din MySQL în fisier Excelși formatul csv.

Vom lua în considerare diverse opțiuni eșantionarea informațiilor din: crearea unui dump a uneia sau mai multor 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 material de calitate, pe care nu sunt dornic să-l copiez și lipim.

Ș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 administrator de sistem, care poate găsi utile informații despre lucrul cu consola și ați venit doar pentru instrucțiuni despre cum să exportați baza de date în phpMyAdmin, apoi vă puteți limita la a citi informațiile de la linkul de mai sus.

Vreau să mă înțelegi corect: nu vreau să te jignesc în niciun fel, dar vreau doar să-ți petreci timpul cu beneficiu maxim pentru job și au primit ceea ce căutau.

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 bazei de date MySQL este, în esență, o descărcare a acesteia făcută în anumită perioadă timp, care vă permite să restabiliți structura și datele bazei de date dacă este necesar.

Export de date este pur și simplu extragerea de informații din tabele în forma 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 cea mai comună opțiune - exportarea datelor dintr-o anumită bază de date către Consola MySQL Pentru a o transfera pe un alt server sau pe o copie 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, indecși, 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.

Cum să faci copii de siguranță ale anumitor tabele MySQL și să primești datele lor în formă lizibilă, vom vorbi mai departe.

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 nume utilizator -p nume_bază de date nume_tabel1, nume_tabel2, ... > cale_și_nume_fișier_dump

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.

Drept urmare, producția noastră va fi cea obișnuită fisier text, care va conține numele câmpurilor sub forma unui antet și informații despre acestea pentru toate înregistrările. Se poate deschide in mod normal editor de text, indiferent de rezoluția pe care o daț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 anterior 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 de utilizare a directivei 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 nu pot fi exportate doar în fișiere, ci și scrise în variabile, iar datele de ieșire pot fi formatate în diferite moduri.

Dacă cel de mai sus este cazul tău, atunci lista plina Puteți găsi parametrii și opțiunile pentru apelarea acestei comenzi aici - https://dev.mysql.com/doc/refman/5.7/en/select-into.html

La sfârşitul lui scurtă excursie pentru mysqldump aș dori să ofer o opțiune pentru apelarea unei comenzi cu o listă de parametri pentru a crea un dump optimizat al bazei de date MySQL și a tabelelor, restabilirea bazei de date și a tabelelor 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 asta este doar în caz volum dat 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 aceea extensia xlsși xlsx au fișiere create în programul Microsoft Office Excel, care funcționează doar pe Windows, dar fișier csv E-urile sunt mai universale și operațiunile cu acestea sunt posibile în multe editori.

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

Dar pentru o asemenea posibilitate acest sprijin trebuie să fie prezent în produs 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 doar în xls sau csv Rezultate SQL solicitări cu care tu și cu mine am învățat să lucrăm mai devreme, pentru că 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 vei 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-una sau mai multe fișier xls ov în consolă, apoi 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.

Exportați date din baza de date MySQL în csv și formatele xls Puteți utiliza următoarele comenzi direct în consola serverului.

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:

Exportați date din Tabelele MySQLîn csv cu comanda de mai sus în în acest caz,, din păcate, nu va fi posibil, pentru că Windows, spre deosebire de Linux, nu are încorporat comanda consolei pentru lucrul cu fire, care este sed în Linux.

Desigur, îl puteți instala, dar este prea multă bătaie de cap. Alternativ, puteți utiliza CygWin- emulator console 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 lansați în felul următor pe care l-am incercat personal:

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

Deschis acest fișierî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. Când vizualizați datele în mod normal, macar, 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 pentru lucrul cu tabele, în care de obicei lucrează 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 ca Intr-un mod similar Vin mai multe editori de tabele.

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 caractere speciale, perceput de editori.

Și apoi am abordat treptat a doua metodă Export MySQL date în csv și xls, ceea ce implică 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 ÎN 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 specificată la apel, care se va deschide corect în majoritatea editoarelor moderne de foi de calcul. Pentru orice eventualitate, vă reamintesc că să fugi această comandă este necesar doar după conectarea la baza de date MySQL.

Această comandă este, de asemenea, excelentă pentru exportul datelor MySQL într-un fișier xls pentru afișare corectăîn Microsoft Office Excel. Numai î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:

EROAREA 1290 (HY000): The Server MySQL rulează cu--secure-file-priv, deci 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 intampinat aceasta problema datorita faptului ca pentru a lucra in consola folosesc kitul de distributie MySQL inclus in kitul WAMP OpenServer care, la randul sau, lanseaza serverul MySQL in acest fel.

Există două moduri de a rezolva problema:

  • Modificați parametrii de pornire a serverului MySQL
  • Schimbați calea către dosar final 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. Daca intalnesti problema asemanatoare- repetă 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, 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 sub 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ă.

Acesta este articolul despre cum să aruncați o bază de date MySQL și tabelele acesteia, precum și despre datele de ieșire din tabelele MySQL către diverse formate, ajunge la final. 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 mulțumi autorului republicând articolul în social media sau financiar folosind formularul de mai jos, astfel încât să puteț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

Cele mai bune articole pe această temă