Si të konfiguroni telefonat inteligjentë dhe PC. Portali informativ
  • në shtëpi
  • Windows 10
  • Ne hedhim bazën e të dhënave MySQL dhe eksportojmë të dhënat në tastierë.

Ne hedhim bazën e të dhënave MySQL dhe eksportojmë të dhënat në tastierë.

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

2018-12-04T00:00Z

2018-12-11T00:00Z

Kur krijojmë një skedar hale me mysqldump, ai përmban një skript të madh SQL për të rikrijuar përmbajtjen e bazës së të dhënave. Pra, ne e rivendosim atë duke ekzekutuar linjën e komandës së klientit MySQL:

Mysql -uroot -p

(ku root është emri ynë i përdoruesit të administratorit për MySQL) dhe pas lidhjes me bazën e të dhënave na duhen komanda për të krijuar bazën e të dhënave dhe për të lexuar skedarin:

Krijo bazën e të dhënave new_db; përdorni new_db; \. dumpfile.sql

Detajet do të ndryshojnë në varësi të opsioneve të përdorura gjatë krijimit të skedarit hale.

2018-12-18T00:00Z

Ju vetëm duhet të ekzekutoni këtë:

mysql -p -u< db_backup.dump

Nëse hale përmban shumë baza të të dhënave, duhet të hiqni emrin e bazës së të dhënave:

mysql -p -u< db_backup.dump

Për të ekzekutuar këto komanda, hapni linja e komandës(në Windows) dhe cd në drejtorinë ku mysql.exe është skedari i ekzekutueshëm mysql.exe (mund t'ju duhet të mendoni pak për këtë, kjo do të varet nga mënyra se si keni instaluar mysql, d.m.th. i pavarur ose si pjesë e një pakete të tillë si WAMP ). Kur jeni në këtë direktori, thjesht duhet të futni komandën.

2018-12-25T00:00Z

Duhet të jetë aq e thjeshtë sa të ekzekutoni këtë:

Mysql -u -fq< db_backup.dump

Nëse hale ka një bazë të dhënash të vetme, mund t'ju duhet të shtoni një rresht në krye të skedarit:

PËRDORIMI ;

Nëse është një hale e shumë bazave të të dhënave, deklaratat e përdorimit janë tashmë atje.

Për të ekzekutuar këto komanda, hapni një komandë (në Windows) dhe cd në direktorinë ku mysql.exe përmban ekzekutuesin mysql.exe (mund të duhet të mendoni pak për këtë, kjo do të varet nga mënyra se si keni instaluar mysql, d.m.th. i pavarur ose si pjesë e një pakete të tillë si WAMP). Pasi të jeni në atë drejtori, thjesht mund të shkruani komandën siç bëra më lart.

2019-01-01T00:00 Z

Komandë me një rresht për të rivendosur SQL të gjeneruar nga mysqldump

Mysql -u -fq E "burimi

2019-01-08T00:00Z

Duke përdorur një skedar hale 200 MB të krijuar në Linux për të rivendosur në Windows me mysql 5.5, kisha më shumë sukses Me

Skedari burimor.sql

Qasja e linjës së komandës mysql sesa përdorimi

mysql< file.sql

Qasja e linjës së komandës që shkakton një gabim të vitit 2006 "serveri ka lënë" (në Windows)

Mjaft e çuditshme, shërbimi i krijuar gjatë (mysql)instalimit i referohet një skedari my.ini që nuk ishte aty. Kam kopjuar skedarin e shembullit "të madh" në my.ini, të cilin e kisha modifikuar tashmë me rritjen e rekomanduar.

Vlerat e mia

Maksimumi i_lejuar_paketë = 64 milion interaktive_kohë_përfundim = 250 pritje_kohë = 250

2019-01-15T00:00Z

Si shembull konkret përgjigja e mëparshme:

Më duhej të rivendosja kopje rezervë kështu që unë mund ta importoj/transferoj atë në SQL Server. Unë instalova vetëm MySql, por nuk e regjistrova si shërbim ose nuk e shtova në rrugën time pasi nuk kam nevojë ta ekzekutoj.

une e perdora Windows Explorer për të vendosur skedarin tim dump në C:\code\dump.sql. Pastaj hapni MySql nga artikulli i menysë Start. Krijoi DB-në, më pas ekzekutoi komandën e burimit me shtegun e plotë si kjo:

Mysql> krijoni bazën e të dhënave temp mysql> përdorni temp mysql> burimin c:\code\dump.sql

Shumicën e kohës, ju mund ta menaxhoni lehtësisht bazën e të dhënave tuaja nga mjetet e uebit si PHPMyAdmin. Fatkeqësisht, ka raste kur është e nevojshme të restaurohet nje numer i madh i të dhëna. Kjo nuk mund të arrihet përmes PHPMyAdmin nga jashtë PHP (ose koha maksimale skripti nuk funksionon ose nuk mund të ngarkohet arkiv i madh nga baza e të dhënave).

Përdorimi i MySQL nga linja e komandës

Nëse përdorni MySQL në Linux ose MS Windows, mund të përdorni vijën e komandës për të kryer shumicën e detyrave. Nëse jeni duke përdorur MS Windows, sigurohuni që shtegu drejt skedarë të ekzekutueshëm Linja e komandës përfshihet në shtegun e sistemit. Përndryshe, do të duhet të futni shtegun e plotë për secilën komandë.

Si të kopjoni një bazë të dhënash MySQL

MySQL ofron një mjet të quajtur "mysqldump". Në thelb, ky mjet krijon një skedar të sheshtë që përmban udhëzime MySQL për të riparuar bazën e të dhënave. Këtu janë disa shembuj të përdorimit të mysqldump:

Krijimi i një kopje rezervë të thjeshtë të bazës së të dhënave

# mysqldump -u emri i përdoruesit -p DB_name > your_file.sql

Kjo krijon një skedar që përmban të gjitha deklaratat MySQL për krijimin e tabelave dhe rikthimin e të dhënave bazë ekzistuese të dhëna. Nëse baza e të dhënave të synuar përmban tabela me emra të njëjtë, ato do të mbishkruhen. Nëse dëshironi tabelat ekzistuese, i cili do të hidhet dhe do të ripërdoret, më pas përdorni opsionin "add-drop-table":

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

Gjithashtu, ju mund ta zgjidhni këtë si një alternativë:

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

Rezervoni bazat e të dhënave të shumta

Ju mund të bëni një kopje të bazave të të dhënave të shumta në një skedar duke përdorur opsionin e bazës së të dhënave:

# mysqldump -u emri i përdoruesit -p --bazat e të dhënave your_database1 your_database2 your_database3 > your_file.sql

Krijimi i një kopje rezervë të të gjitha bazave të të dhënave mund të arrihet duke përdorur opsionin të gjitha bazat e të dhënave:

# mysqldump -u emri i përdoruesit -p --të gjitha bazat e të dhënave > your_file.sql

Rezervimi i tabelave InnoDB

Nëse baza e të dhënave ka kolona InnoDB, do t'ju duhet të çaktivizoni integritetin e referencës kur të rivendosni të dhënat. Fatkeqësisht, kjo nuk mund të bëhet duke përdorur programin mysqldump. Për ta bërë këtë, duhet të hapni vetë skedarin dhe të shtoni:

VENDOSI KONTROLLET_KEY_TË HUAJ = 0;
... Dhe shtoni sa vijon në fund të skedarit:
VENDOSI KONTROLLET_KEY_TË HUAJ = 1;

Kompresimi i skedarëve MySQL Dump

Nëse jeni duke përdorur mysqldump në guaskë Linux, mund të kompresoni nëpërmjet Gzip për të ngjeshur skedarin dump (duke supozuar se keni instaluar gzip):

# mysqldump -u emri i përdoruesit -p emri_baza e të dhënave_yte | gzip -c your_file.sql.gz

Rivendosja nga një kopje rezervë e MySQL

Për të rivendosur një kopje rezervë të krijuar me mysqldump, do t'ju duhet të përdorni komandën MySQL. Nëse skedari juaj i grumbullimit të MySQL nuk përmban "Krijo bazën e të dhënave" o, mund të përdorni komandën e mëposhtme:

# mysql -u emri i përdoruesit -p your_database_name< your_file.sql

Por, nëse kjo ka sukses, përdorni të njëjtën komandë pa specifikuar emrin e bazës së të dhënave:

# mysql -u emri i përdoruesit -p< your_file.sql

Më shumë informacion i detajuar rreth mysqldump mund të gjendet në faqen zyrtare të MySQL.

Është e çuditshme, por është mjaft e vështirë të gjesh këtë informacion në internet. Një mori rekomandimesh të gabuara. Por në fakt, gjithçka është e thjeshtë. Ju mund të rivendosni deponinë me komandën:

# mysql-u -p< mysql_dump.sql.

Në vend të kësaj, zëvendësoni emrin e përdoruesit, unë personalisht bëj rikuperimin nga root. Dhe në mysql_dump, sql, në fakt, hale është bërë mysqldump dobishmëri. Opsioni -p tregon autorizimin me një fjalëkalim, pasi të shtypni enter, do t'ju kërkohet një fjalëkalim. Kjo është e gjitha, në fakt. Ju mund të bëni një hale me komandën:

# mysqldump-u rrënjë -p -f emri_bazës së të dhënave > file_with_dump.sql

Këtu parametri -f database_name specifikon emrin e bazës së të dhënave që po ruajmë. Nëse keni nevojë për gjithçka, ne e zëvendësojmë atë me -- të gjitha bazat e të dhënave. Ky opsion do të tregojë ruajtjen e të gjitha bazave të të dhënave në server. Për të mos futur fjalëkalimin çdo herë, mund ta specifikoni drejtpërdrejt në komandë (kjo është e nevojshme nëse jeni duke bërë një cron dump nga një skript), megjithatë, nga pikëpamja e sigurisë, këtu lindin pyetje, veçanërisht nëse fjalëkalimi është rrënjë për muskujt. Tani, sikur muskuli të kuptonte të paktën fjalëkalimet e md5... Megjithatë, nuk është fakt që ai nuk e kupton, thjesht ndoshta nuk e di :)

Autori

Alex Razgibalov

Një burrë i çmendur, në moshë të papërcaktuar, që gëzon një iluzion persekutimi. Patologjikisht mosbesues, egoist, autoritar. Diagnoza dytësore - programues dhe asistent. Zotëron gjuhe angleze në një nivel rreth bisedor të ndyrë. Njohur gjithashtu me disa gjuhë të tjera. Ai është i interesuar për të gjithë dhe për gjithçka, për shkak të së cilës njohuritë e tij në çdo fushë janë sipërfaqësore dhe të cekëta. Personazhi është i pakontrollueshëm. Forca - 55 gradë.

Ju ndoshta ju është dashur të importoni deponitë e bazës së të dhënave më shumë se një herë. Dhe pavarësisht nga banaliteti i kësaj detyre, shpesh lindin pyetje dhe ndonjëherë probleme që lidhen me këtë. Më poshtë është i gjithë kodi që ju nevojitet për të aplikuar shpejt një deponim të bazës së të dhënave nga vija e komandës.

SET EMRAVE utf8; DOP BAZA E TË DHËNAVE `mydb`; KRIJO BAZA E TË DHËNAVE `mydb` SET E PARAKTUAR E KARAKTERVE utf8; PËRDORIMI `mydb`; SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO"; SET autocommit=0; VENDOSI kontrollet e_çelësave të huaj=0; SET_kontrollet unike=0; BURIMI /rruga/to/db_dump.sql; KOMITET; SET autocommit=1; VENDOSI kontrollet e_çelësave të huaj=1; SET_kontrollet unike=1;

Këto komanda do t'ju lejojnë të importoni me shpejtësi një deponim të bazës së të dhënave dhe të shmangni problemet. Për më tepër, disa nga këto probleme nuk zgjidhen as nga klientët e zakonshëm mysql, si phpMyAdmin dhe të tjerët.

Le të përpiqemi ta kuptojmë këtë kod në rregull.

SET EMRAVE utf8; thotë se shkëmbimi i të dhënave do të bëhet në kodimin UTF-8 dhe aty ndodhet skedar origjinal Depon e bazës së të dhënave dhe kjo është ajo që do të ketë baza e të dhënave përfundimtare.

DOP BAZA E TË DHËNAVE `mydb`; Dhe KRIJO BAZA E TË DHËNAVE `mydb` SET E PARAKTUAR E KARAKTERVE utf8; kryejnë shkatërrimi baza e të dhënave dhe krijimi i saj pasues me kodimin e paracaktuar UTF-8. Është e qartë se kjo do të fshijë të gjitha tabelat dhe të dhënat në to, por kjo do të na japë besimin se baza e të dhënave që rezulton do të korrespondojë plotësisht me të dhënat në skedarin hale.

PËRDORIMI `mydb`; tregon se kjo bazë të dhënash të veçantë duhet të përdoret për të gjitha komandat nga skedari dump (kontrolloni skedarin dump për praninë e kësaj direktive duke treguar një bazë të dhënash të ndryshme për të shmangur konfuzionin).

SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";çaktivizon rritjen e numëruesit të rritjes automatike kur shkruani një vlerë prej 0 në një fushë të rritjes automatike Si parazgjedhje, kur shkruani një vlerë NULL ose 0 në një fushë të tillë, ajo rritet automatikisht. Dhe megjithëse të kesh një vlerë prej 0 në një fushë auto-inkrementale nuk është praktika më e mirë, ndonjëherë ndodh që ende të ketë vija të tilla në hale (diçka të ngjashme kam hasur në një hale nga Magento). Vlen gjithashtu të përmendet se mysqldump e ka përfshirë këtë direktivë si parazgjedhje në deponitë e saj prej disa kohësh.

SET autocommit=0; përpara se të ngarkoni deponinë dhe KOMITET; pas tij, ata shpejtojnë ekzekutimin e INSERT-ve për tabelat InnoDB, pasi kur aktivizohet modaliteti i kryerjes automatike, regjistrat ruhen në disk me çdo INSERT. Mund të ndihmojë kur rrotullohen deponitë e mëdha.

VENDOSI kontrollet e_çelësave të huaj=0; opsioni më i dukshëm, pa të cilin shumica e deponive nuk mund të aplikoheshin fare. Çaktivizon kontrollet e çelësave të huaj, gjë që lejon që të dhënat të shkruhen në çdo mënyrë, duke përfshirë me lidhje rrethore me çelësa të huaj. Ky opsion gjithashtu përshpejton importin në dump.

SET_kontrollet unike=0;çaktivizon kontrollet e unike për çelësat dytësorë, të cilët përsëri mund të përshpejtojnë procesin e importimit.

Dhe së fundi, ekipi kryesor, për hir të së cilës ishte planifikuar e gjithë kjo - BURIMI /rruga/to/db_dump.sql; importon direkt nga databaza e të dhënave mysql skedari i specifikuar. Rruga drejt skedarit mund të jetë absolute ose relative me drejtorinë nga e cila keni aksesuar në tastierën mysql.

Dhe pasi të përfundojë importi, ne rikthejmë vlerën e flamujve, megjithëse kjo nuk duhet të bëhet, sepse komanda SET në mysql, si parazgjedhje, ndryshon vlerat e variablave vetëm në kontekstin e sesionit aktual.

Pershendetje miq! 🙂

Sot vendosa të vazhdoj bisedën rreth punës me MySQL në tastierë dhe t'i kushtoj vëmendje procedurës së eksportit të bazës së të dhënave Të dhënat e MySQL.

Në këtë artikull do të flas se si të bëj një hale Bazat e të dhënave MySQL, si dhe ngarkoni të dhëna nga MySQL në skedar Excel dhe format csv.

Ne do të shqyrtojmë opsione të ndryshme kampionimi i informacionit nga: krijimi i një grumbullimi të një ose disa bazave të të dhënave, eksportimi i të dhënave nga tabelat individuale dhe rezultate arbitrare ZGJIDH kërkesat.

Ne do të flasim gjithashtu se si të nxjerrim të dhëna nga një bazë të dhënash MySQL në tastierën e serverit dhe linjën e komandës MySQL.

Në këtë artikull, unë nuk do të flas për mënyrën e eksportimit të të dhënave duke përdorur phpMyAdmin dhe mjete të tjera vizuale.

Së pari, sepse tashmë ka mjaft material për këtë temë në internet. Për më tepër material cilësor, të cilin nuk kam dëshirë ta kopjoj-paste.

Dhe, së dyti, unë vetë shqyrtova shkurtimisht procesin e nxjerrjes së informacionit nga një bazë të dhënash MySQL në një skedar SQL në një nga artikujt e mi, ku fola për .

Pra, nëse nuk jeni një zhvillues profesionist ose administratori i sistemit, të cilit mund t'i gjeni të dobishme informacionet rreth punës me tastierën, dhe keni ardhur vetëm për udhëzime se si të eksportoni bazën e të dhënave në phpMyAdmin, atëherë mund të kufizoheni në leximin e informacionit në lidhjen e mësipërme.

Unë dua që ju të më kuptoni saktë: Unë nuk dua t'ju ofendoj në asnjë mënyrë, por thjesht dua që ju të kaloni kohën tuaj me përfitim maksimal për punën dhe morën atë që kërkonin.

Kjo përfundon pjesën hyrëse dhe kalojmë në një rishikim të komandave të konsolës për krijimin e një baze të dhënash MySQL, të cilën vendosa ta rendit sipas sasisë së të dhënave që ruhen: duke filluar nga eksportimi i të gjithë bazës së të dhënave, duke përfunduar me tabela individuale dhe rezultatet e pyetje arbitrare.

Krijimi i një baze të dhënash MySQL përmes konsolës

Do të doja të bëja një sqarim të vogël që në fillim.

Deponia e bazës së të dhënaveështë një skedar me një grup komandash SQL, i cili, kur lëshohet, ju lejon të krijoni baza të të dhënave dhe tabela, si dhe t'i mbushni ato me informacion. Deponia është e nevojshme për ata që duan të shkarkojnë një bazë të dhënash MySQL në mënyrë që ta kopjojnë atë në një server tjetër ose brenda një ekzistues.

Gjithashtu, nëse dikush nuk e di, një kopje rezervë e bazës së të dhënave MySQL është, në thelb, një grumbullim i tij i bërë në periudhë të caktuar kohë, e cila ju lejon të rivendosni strukturën dhe të dhënat e bazës së të dhënave nëse është e nevojshme.

Eksporto të dhënaështë thjesht nxjerrja e informacionit nga tabelat në formë teksti për punë të mëtejshme me redaktorët e tekstit ose grafikë.

Prandaj, komandat për këto veprime do të jenë paksa të ndryshme.

Për të krijuar një bazë të dhënash hale, MySQL ka një mjet të integruar të quajtur mysqldump, i cili duhet të përdoret jashtë vijës së komandës MySQL në tastierën e serverit ose guaskën tjetër.

Pra, për opsionin më të thjeshtë dhe më të zakonshëm - eksportimin e të dhënave nga një bazë të dhënash specifike në Konsola MySQL Për ta transferuar atë në një server tjetër ose kopje të brendshme, duhet të ekzekutoni komandën e mëposhtme:

Mysqldump -u username -p database_name > path_and_dump_file_name

Ky mjet mund të krijojë deponime të bazës së të dhënave MySQL vetëm në formën e skedarëve me komanda SQL, kështu që pavarësisht se çfarë shtrirjeje zgjidhni për skedarin tuaj, përmbajtja e tij do të jetë e njëjtë në çdo rast. Dhe mos harroni të kontrolloni lejet e shkrimit të drejtorisë në të cilën do të vendoset përpara se të eksportoni informacion nga MySQL në mënyrë që skedari të mund të krijohet.

Nëse befas ju duhet të bëni një hale të të gjitha bazave të të dhënave në server, atëherë përdorni opsionin e mëposhtëm të komandës:

Mysqldump -u emri i përdoruesit -p --të gjitha bazat e të dhënave > path_and_dump_file_name

Për të hedhur vetëm disa baza të të dhënave specifike, do t'ju duhet të telefononi mysqldump me parametrat e mëposhtëm:

Mysqldump -u emri i përdoruesit -p --baza e të dhënave data_name1, data_name2, ... > path_and_dumpfile_name

Si rezultat, në secilin rast ju do të merrni një hale të bazës së të dhënave MySQL që përmban komanda për krijimin e strukturës së tabelave të përfshira (fushat, llojet e tyre, indekset, çelësat, etj.), si dhe operacionet për plotësimin e tyre me të dhëna.

Ky opsion është i përshtatshëm vetëm për restaurimin dhe kopjimin e bazave të të dhënave të tëra.

Si të bëni kopje rezervë të tabelave të caktuara MySQL dhe të merrni të dhënat e tyre në formë e lexueshme, do të flasim më tej.

Hedhja e një tabele MySQL dhe eksportimi i të dhënave

Për të krijuar një grumbull të tabelave të caktuara të bazës së të dhënave MySQL, do të na duhet i njëjti mjet mysqldump, thirrur me parametrat e mëposhtëm:

Mysqldump -u emri i përdoruesit -p emri i bazës së të dhënave emri_tabela1, emri_tabela2, ... > path_and_dumpfile_name

Kur thërrisni mysqldump, mund të specifikoni tabelat e kërkuara si vlerën e parametrit -- tavolina, kur përdoret parametri -- bazat e të dhënave do të injorohen:

Mysqldump -u emri i përdoruesit -p --baza e të dhënave data_name1, data_name2 --tabela emri_tabela1, emri_tabela2, ... > path_and_dumpfile_name

Shembulli i mësipërm do të shfaqë gabimin e mëposhtëm:

Mysqldump: Mori gabim: 1049: Baza e të dhënave të panjohura "database_name1", kur zgjidhni bazën e të dhënave

Siç mund ta shihni, do të përdoret vetëm databaza më e fundit nga lista. Në parim, kjo sjellje është mjaft logjike, sepse Tabelat e specifikuara mund të mos shfaqen në të gjitha bazat e të dhënave.

Në rregull, ne kemi marrë një grumbull të tabelave të bazës së të dhënave MySQL. Mund të përdoret për t'i rikthyer ato ose për t'i kopjuar ato së bashku me strukturën.

Por, çka nëse thjesht duhet të merrni informacionin e ruajtur në to dhe, mundësisht, në një formë të lexueshme, në mënyrë që t'ia dërgoni menaxherit dhe ta shikoni në një redaktues të rregullt teksti ose fletëllogaritëse? MySQL gjithashtu ka mjete për këtë.

Mundësia e telefonimit të shërbimeve do të na ndihmojë të arrijmë planet tona mysql nga tastiera me parametra të caktuar:

Mysql -u username -p database_name -e "SELECT * FROM table_name"

Kjo komandë do të na lejojë të ekzekutojmë një pyetje në bazën e të dhënave të kërkuar dhe ta nxjerrim rezultatin në tastierë pa shkuar në linjën e komandës MySQL.

Epo, për të mos nxjerrë të dhëna në tastierë, por për t'i shkruar ato në një skedar, duhet të plotësoni komandën si më poshtë:

Mysql -u emri i përdoruesit -p -e "SELECT * FROM emri i tabelës" > path_and_filename

Falë këtyre ndërtimeve, jo vetëm që mund të marrim të dhëna të ruajtura në të gjitha fushat e tabelës, por edhe në ato specifike. Për ta bërë këtë, thjesht zëvendësoni simbolin e karaktereve (*) me ato të kërkuara, të ndara me presje.

Si rezultat, prodhimi ynë do të jetë i zakonshëm skedar teksti, i cili do të përmbajë emrat e fushave në formën e një titulli dhe informacion mbi to për të gjitha regjistrimet. Mund të hapet normalisht redaktori i tekstit, pavarësisht se çfarë rezolucioni i jepni kur e krijoni.

Nëse dëshironi të eksportoni të dhëna nga një bazë të dhënash MySQL në formatin xls ose csv në mënyrë që skedari që rezulton të shfaqet saktë në redaktuesit e fletëllogaritjes, atëherë ne do t'ju tregojmë se si ta bëni këtë pak më vonë :)

Krijimi i kopjeve rezervë dhe nxjerrja e të dhënave nga një bazë të dhënash MySQL duke përdorur pyetje

Ne folëm se si të hedhim një bazë të dhënash MySQL - një ose disa, si dhe tabela individuale. Por ndonjëherë në praktikë ka raste kur duhet të eksportoni një grup të dhënash që nuk kufizohet në një tabelë. Ose duhet të zgjidhni vetëm disa të dhëna nga tabela.

Zhvilluesit e projekteve të korporatave veçanërisht shpesh e hasin këtë kur menaxherët u kërkojnë atyre të ofrojnë të gjitha llojet e të dhënave statistikore. Ose kur duhet të bëni kopje rezervë të një pjese të caktuar të tabelës për ta rikthyer shpejt atë.

Për kopje rezervë do të na duhet i njëjti mjet mysqldump, e cila do të duhet të quhet kështu:

Mysqldump -u user_name -p database_emri_tabela_where "lookup" > path_and_dump_file_name

Si rezultat, ne do të marrim një skedar me komanda SQL për të krijuar një tabelë me të gjithë strukturën e saj, e cila, pas krijimit, do të mbushet me informacionin e zgjedhur duke përdorur një pyetje kërkimi.

Nëse thjesht duhet të marrim të dhënat e ruajtura në një ose më shumë tabela, atëherë do të na duhet të modifikojmë komandën e përdorur në rastin e mëparshëm kur marrim të gjitha të dhënat në tabelë, vetëm me disa sqarime:

Mysql -u user_name -p -e "SELECT * FROM table_name WHERE kërko" > path_and_file_name

Siç e kuptoni, përveç sqarimeve të ndryshme të specifikuara në kërkesë duke përdorur direktivën KU, mund të përdorni konstruksione të tjera SQL: BASHKOHU, BASHKIM etj.

Mund të mbledhësh çdo lloj statistike :)

I njëjti veprim mund të kryhet edhe kur punoni në linjën e komandës MySQL duke përdorur komandën e mëposhtme:

ZGJIDH * NGA database_tabela WHERE kërkimi INTO OUTFILE "path_and_file_name";

Kjo komandë është krijuar posaçërisht për të krijuar skedarë me rezultate kampionimi. Për më tepër, rezultatet jo vetëm që mund të eksportohen në skedarë, por edhe të shkruhen në variabla, dhe të dhënat e daljes mund të formatohen në mënyra të ndryshme.

Nëse sa më sipër është rasti juaj, atëherë listën e plotë Ju mund t'i gjeni parametrat dhe opsionet për thirrjen e kësaj komande këtu - https://dev.mysql.com/doc/refman/5.7/en/select-into.html

Në fund të tij ekskursion i shkurtër për mysqldump do të doja të jepja një mundësi për të thirrur një komandë me një listë parametrash për të krijuar një hale të optimizuar të bazës së të dhënave dhe tabelave MySQL, duke rivendosur bazën e të dhënave dhe tabelat individuale nga të cilat do të marrë më pak kohë sesa me një thirrje të rregullt:

Mysqldump -u emri i përdoruesit -h host_ose_IP_MySQL_server -p --no-autocommit --opt database_name > path_and_dump_file_name;

Për hir të eksperimentit kam përdorur këtë opsion për të hedhur një bazë të dhënash MySQL prej 143 MB në madhësi. Rivendosja e mëvonshme zgjati 59 sekonda krahasuar me 1 minutë e 3 sekonda kur baza e të dhënave u rivendos nga një hale e bërë duke thirrur mysqldump pa parametra të veçantë.

Jam dakord që kjo është një gjë e vogël. Por kjo është vetëm në rast vëllimi i dhënë të dhëna. Nëse e përdorni këtë teknikë kur krijoni një hale më të madhe se 1 GB, ndryshimi do të jetë më i rëndësishëm.

Nëse hasni në një situatë të tillë, mos harroni të arkivoni fillimisht deponinë e bazës së të dhënave MySQL. Më e mira është tar.gz. Atëherë rikuperimi do të marrë edhe më pak kohë.

Eksportoni të dhëna nga MySQL në skedarë Excel dhe csv

Jo më kot kombinova informacionin për nxjerrjen e informacionit nga MySQL në këto dy formate në një bllok, sepse ... ato janë shumë të ngjashme, ato përdoren afërsisht në të njëjtën mënyrë (për të strukturuar informacionin në formën e tabelave) dhe do të thirren të njëjtat komanda për eksport.

Siç e dini, i vetmi ndryshim domethënës midis këtyre formateve është se zgjerimi xls dhe xlsx kanë skedarë të krijuar në program Microsoft Office Excel, i cili funksionon vetëm në Windows, por skedar csv s janë më universale dhe operacionet me to janë të mundshme në shumë redaktorë.

Kjo nuk do të thotë se xls është askund përveçse Microsoft Office Excel nuk do të hapet. I njëjti OpenOffice konfirmon të kundërtën.

Por për një mundësi të tillë këtë mbështetje duhet të jetë i pranishëm në produkt software. Skedarët csv janë të lexueshëm edhe në një redaktues teksti të zakonshëm si Notepad, por kjo formë nuk do të jetë plotësisht e lexueshme.

Më lejoni të filloj me faktin se mund të eksportoni vetëm në xls ose csv Rezultatet e SQL kërkesat me të cilat ju dhe unë mësuam të punonim më herët, sepse do të jetë e pamundur të nxirret e gjithë databaza në një skedar në një operacion.

Së pari, kjo nuk është optimale, sepse... një skedar i tillë nuk ka gjasa të hapet nëse ka një sasi të madhe informacioni të ruajtur në bazën e të dhënave. Dhe, së dyti, nuk është e qartë se si të ndahen informacionet brenda skedarit në tabela dhe fusha.

Jo, sigurisht që është e mundur ta bëni këtë, por nuk ka gjasa të bëhet me një komandë dhe në përgjithësi nuk ka gjasa që dikush ta bëjë këtë në tastierë. Unë mendoj se për këto qëllime do t'ju duhet softuer special ose të paktën një skenar.

Nëse papritmas e dini se si mund të eksportoni informacion nga e gjithë baza e të dhënave MySQL në një ose më shumë skedar xls ov në tastierë, pastaj shkruani në lidhje me të në komente. Unë mendoj se leximi për këtë do të jetë i dobishëm për shumë njerëz.

Pra, nëse po flasim se si të eksportojmë të dhëna nga MySQL në xls dhe csv, atëherë kjo mund të bëhet direkt në tastierën e serverit përmes mjetit mysql ose në, veprën me të cilën ju njoha në artikullin tim të mëparshëm.

Le të fillojmë me radhë.

Eksportoni të dhëna nga baza e të dhënave MySQL në csv dhe formatet xls Ju mund të përdorni komandat e mëposhtme direkt në tastierën e serverit.

Aktiv Linux sistemet:

Mysql -u username -d database_name -p -e "SELECT * FROM database_tabela;" | sed "s/"/\"/;s/\t/\",\"/g;s/^/\"/;s/$/\"/;s/\n//g" > emri_shtegu_dhe_file. csv

Në parim, nëse është absolutisht e nevojshme, mund ta përdorni këtë komandë për të eksportuar të dhënat e MySQL në një skedar Excel. Por, të them të drejtën, nuk jam marrë me këtë në praktikë dhe nuk e kam idenë se çfarë do të dalë në fund, sepse... Aktualisht jam duke punuar në Windows. Nëse e përdorni këtë komandë nën Linux, ju lutemi shkruani në komente për rezultatet e punës suaj. Unë mendoj se informacioni do të jetë me interes për të gjithë.

Aktiv Dritaret:

Eksporto të dhëna nga Tabelat MySQL në csv me komandën e mësipërme në në këtë rast, për fat të keq, nuk do të jetë e mundur, sepse Windows, ndryshe nga Linux, nuk ka të integruar komanda e konsolës për të punuar me threads, i cili është sed në Linux.

Sigurisht, mund ta instaloni, por është shumë telash. Përndryshe, ju mund të përdorni CygWin- emulator Konzolat Linux për sistemet Windows.

Është mirë nëse e keni të instaluar tashmë. Përndryshe, eksportimi i të dhënave nga baza e të dhënave MySQL duke përdorur metodën e zgjedhur do të na sjellë shumë telashe.

Por nxjerrja e informacionit në një skedar xls është aq e lehtë sa 5 kopecks :) Është shumë e lehtë ta lëshosh atë në mënyrën e mëposhtme të cilën e kam provuar personalisht:

Mysql -u username -d database_name -p -e "SELECT * FROM database_tabela;" > path_and_file_name.xls

Hapur këtë skedar në Microsoft Office Excel pa asnjë problem fare. E vetmja gjë është se gjatë hapjes së tij, në ekran u shfaq një mesazh që paralajmëronte se formati aktual i skedarit që hapet ndryshon nga shtrirja e specifikuar.

Por kur konfirmoi veprimin, dokumenti u hap pa vështirësi - i gjithë informacioni u nda në qeliza në formën në të cilën ishte ruajtur në vetë tabelën.

Nuk e di, mbase nëse kryeni ndonjë veprim specifik në Microsoft Office Excel, do të lindin probleme në të ardhmen; Kur shikoni të dhënat normalisht, të paktën, nuk pashë asgjë të pazakontë.

Nëse hasni ndonjë problem gjatë përdorimit të skedarit xls të eksportuar nga MySQL, qoftë në këtë program ose në të tjerë, ju lutem më njoftoni në komente.

Duke përdorur metodën e përshkruar më sipër, ju mund të eksportoni përmbajtjen e një baze të dhënash MySQL në një skedar csv, në parim. Por më pas të dhënat nga fusha të ndryshme të tabelës do të shkruhen në masë, pa kufizues, të cilët mund të mos shfaqen mirë në programe të ndryshme për punën me tabela, në të cilat zakonisht punojnë me skedarë csv.

OpenOffice, meqë ra fjala, nuk i intereson :) Ai kufizoi automatikisht informacionin e marrë në mënyrën se si ne eksportuam përmbajtjen e bazës së të dhënave MySQL në xls. Nuk e di si e bën, por rekomandoj ta përdor :)

Epo, i njëjti Microsoft Office Excel shfaqi të gjithë informacionin që korrespondon me një rekord në tabelë, duke e shkruar atë në një qelizë pa asnjë kufi. Unë mendoj se Në mënyrë të ngjashme Më shumë redaktorë të tabelës po vijnë.

Prandaj, kur eksportoni një bazë të dhënash MySQL në skedarët csv, duhet ta bëni duke ndarë informacionin personazhe të veçanta, e perceptuar nga redaktorët.

Dhe pastaj gradualisht iu afrova metodës së dytë Eksporti i MySQL të dhënat në csv dhe xls, që përfshin përdorimin e linjës së komandës MySQL.

Pra, për të eksportuar të dhënat e MySQL në një skedar csv në këtë mënyrë, ne kemi nevojë për komandën e mëposhtme:

ZGJIDH * NGA databaza_tabela NË OUTFILE "path_and_file_name.csv" FUSHAT E PËRFUNDUARA NGA "," TË MBYLLUR NGA """ RRESHTAT E PËRFUNDUARA NGA "\n";

Si rezultat i ekzekutimit të tij, do të merrni një skedar csv në shtegun që specifikuat kur telefononi, i cili do të hapet saktë në shumicën e redaktuesve modern të fletëllogaritjes. Për çdo rast, ju kujtoj që të vraponi këtë komandë nevojitet vetëm pas lidhjes me bazën e të dhënave MySQL.

Kjo komandë është gjithashtu e shkëlqyeshme për eksportimin e të dhënave MySQL në një skedar xls shfaqja e saktë në Microsoft Office Excel. Vetëm në këtë rast nuk kemi nevojë për ndarës, sepse ato do të ndërhyjnë në ndarjen e informacionit në qeliza:

SELECT * NGA databaza_tabela NE OUTFILE "path_and_file_name.xls";

Sidoqoftë, në praktikë, jo gjithçka është aq e thjeshtë sa përshkrova. Gjatë ekzekutimit të komandës, mund të hasni gabimin e mëposhtëm në tastierë që pengon përfundimin e eksportit:

GABIM 1290 (HY000): The Serveri MySQL eshte duke vrapuar me--secure-file-priv opsion kështu që nuk mund ta ekzekutojë këtë deklaratë

Shkaktohet nga fakti që serveri juaj MySQL është nisur me opsionin --secure-file-priv. Personalisht, e kam hasur këtë problem për faktin se për të punuar në tastierë përdor shpërndarjen MySQL të përfshirë në kompletin WAMP OpenServer, i cili, nga ana tjetër, lëshon serverin MySQL në këtë mënyrë.

Ka dy mënyra për të zgjidhur problemin:

  • Ndryshoni parametrat e nisjes së serverit MySQL
  • Ndrysho rrugën në dosjen përfundimtare Eksporti i MySQL

Metoda e parë më dukej shumë e ndërlikuar, sepse... Do të më duhej të gërmoja në konfigurimin e OpenServer, i cili nuk ishte shkruar nga unë me të gjitha rrethanat që pasuan 🙂 Prandaj, vendosa të marr rrugën e dytë. Nëse hasni problem i ngjashëm- perserit pas meje.

Së pari ju duhet të shkoni në linjën e komandës MySQL dhe të ekzekutoni një nga komandat e mëposhtme:

SHQI NDRYSHORE SI "secure_file_priv"; SELECT @@GLOBAL.secure_file_priv;

Rezultati i ekzekutimit të të dyjave do të jetë vlera e ndryshores globale MySQL sigurt_file_priv, e cila përmban shtegun drejt direktorisë përmes së cilës mund të kryhen operacionet e eksportit dhe importimit të të dhënave MySQL (në të ardhmen, një lidhje me një artikull mbi importimin e të dhënave).

Ato. kur përdorni komandat NGARKONI TË DHËNAT Dhe ZGJEDH... INTO OUTFILE skedarët e eksportuar dhe të importuar mund të gjenden vetëm brenda këtij direktori.

Në rastin tim, kjo variabël u vendos në përgjithësi në I PAVLEFSHËM, sepse Unë, siç thashë tashmë, përdor shërbimet MySQL nga shpërndarja e përfshirë në OpenServer për të punuar në tastierë. Kjo vlerë tregoi se operacionet e eksportit dhe importimit të të dhënave MySQL duke përdorur komandat e specifikuara ishin mbyllur fare.

Siç doli më vonë, kjo është një situatë e zakonshme kur përdorni serverë WAMP dhe MAMP me kuti.

Fatkeqësisht, në rastin tim nuk ishte e mundur të përdoreshin metodat e zakonshme të ndryshimit të vlerave të variablave globale MySQL:

SET emri_ndryshore = vlera;

Si rezultat, pashë vetëm gabimin e mëposhtëm në tastierë:

ERROR 1238 (HY000) në rreshtin 1: Variabli "secure_file_priv" është një variabël vetëm për lexim.

Si rezultat, për të ndryshuar vlerën e një ndryshoreje sigurt_file_priv dhe hapja operacionet e eksportit dhe importit, më duhej të shkoja në skedarin e konfigurimit MySQL mysql.ini, i cili ndodhet në direktorinë rrënjë të shpërndarjes MySQL, ose mund të aksesohet në një mënyrë tjetër nëse MySQL përfshihet me WAMP/LAMP/ Ndërtimi i serverit MAMP.

Meqë ra fjala, nëse doni të ndryshoni shtegun për në drejtorinë e shkëmbimit të skedarëve, do t'ju duhet të bëni të njëjtën gjë.

Në rastin tim, kjo ndryshore ekzistonte tashmë në konfigurim, vetëm në formën e komentuar:

Secure-file-priv = "%dprogdir%\\userdata\\temp"

Nëse nuk e keni atë, atëherë shkruani nga e para në seksion (të paktën për mua ndodhej aty).

E hoqa nga komenti dhe vendosa ta përdor në formën në të cilën ishte shkruar. Ato. kur eksportoni të dhëna nga MySQL dhe i importoni përsëri, skedarët e mi tani do të ruhen në një direktori c:\openserver\userdata\temp\.

Pas ndryshimit të konfigurimit (çdo, meqë ra fjala), mos harroni të rinisni serverin tuaj ose një shërbim të veçantë, cilësimet e të cilit i keni redaktuar, nëse është e mundur, që ndryshimet të hyjnë në fuqi!

Për t'u siguruar, pas rinisjes së serverit MySQL, shfaqni përsëri variablin sigurt_file_priv dhe kopjoni vlerën e tij në clipboard.

Dhe tani duhet të thërrasim komandën si në fillim, vetëm përpara emrit të skedarit në të cilin do të ruhen informacionet nga baza e të dhënave MySQL, shkruani shtegun e ruajtur në variablin që po ndryshojmë në formën e mëposhtme:

ZGJIDH * NGA databaza_tabela NË OUTFILE "secure_file_priv_value\file_name.csv";

Pas kësaj, eksportimi i të dhënave nga MySQL funksionoi në rastin tim.

Pika e rëndësishme! Nëse punoni me MySQL nën Windows, atëherë mos harroni të ndryshoni "\" në "/" kur specifikoni shtegun e skedarit, përndryshe gabimi do të jetë --secure-file-priv do të vazhdojë të shfaqet ende.

Ky është artikulli se si të hidhni një bazë të dhënash MySQL dhe tabelat e saj, si dhe të jepni të dhëna nga tabelat MySQL në formate të ndryshme, i vjen fundi. Shkruani komentet tuaja në komente dhe ndani me të gjithë opsionet tuaja të skenarit që përdorni më shpesh në praktikë.

Nëse ju pëlqeu artikulli, mund ta falënderoni autorin duke e ripostuar artikullin në mediat sociale ose financiarisht duke përdorur formularin e mëposhtëm, në mënyrë që të mund të paguani për hostimin bazë.

Fat të gjithëve dhe shihemi përsëri! 🙂

P.S.: nëse keni nevojë për një faqe interneti ose keni nevojë të bëni ndryshime në një ekzistuese, por nuk ka kohë apo dëshirë për këtë, unë mund të ofroj shërbimet e mia.

Me shume se 5 vite eksperience zhvillimi profesional i faqes në internet. Punojnë me PHP

Artikujt më të mirë mbi këtë temë