Creați primul liliac-fișier sau să vă amintiți crearea și restaurarea bazei de date MySQL din linia de comandă,

Creați primul liliac-fișier sau să vă amintiți crearea și restaurarea bazei de date MySQL din linia de comandă,
Mi-a luat doar acum dintr-un singur fișier de imagine sql-Nogo pentru a crea mai multe baze de date diferite, cu același conținut de pe halda acestora. Nu întreba de ce, pentru toate ciudățeniile sale. Având în vedere că suma în avans a bazelor de date și numele lor nu au fost cunoscute, decizia politică a fost făcută pentru a scrie în această chestiune un pic (sau așa cum se întâmplă) fișierul batch. Ca întotdeauna, mână în ceva nou, chiar și cel mai simplu lucru mic este câteva caracteristici distractive pe care doriți să le păstrați și amintiți-vă. Ceea ce urmează descrie ceea ce a venit din ea.

Ceea ce avem.

Dump.sql un fișier - bază de date arunca tot felul de a crea masă și se introduce în, nu contează.
Și într-un fișier separat databases.txt au o listă cu numele majorității acestor baze.
Avem nevoie pentru a citi linia de fișiere de linie, de a crea un nume pentru fiecare bază corespunzătoare și conduce în conținutul ei dump.sql.
Notă: În exemplul nostru, toate fișierele sunt într-un singur dosar

Cum de a face acest lucru.

Cum de a citi un fișier, deschideți Google, am găsit imediat.
Ușor Hitch a fost faptul că interogarea executa comenzi din fișierul dovedit ușor, dar pur și simplu nu a putut efectua simplu sql-interogare din linia de comandă.
Se pare a avea mysql -e, care vă permite să rulați interogări ca acest lucru:
Dar nu a funcționat, probabil din cauza krivosti mâinile mele.
Prin urmare, a fost folosit un truc inteligent: toate cererile sunt citite din fișierul temporar, în care pre-înregistrate comenzile dorite :-)
Să începem. Create_db.bat a crea un fișier și scrie-l în următoarea, apoi să vedem ce este vorba

Ceea ce a fost scris.

1. @echo off
Dezactivați ieșirea în consolă, vom retrage doar ceea ce ne interesează
2. pentru / F%. în (databases.txt) do (.)
Am citit linia de fișiere de linie databases.txt, care este o listă a bazelor noastre. O linie - o bază. Pentru numele nu există lacune, și diverse simboluri misterioase, oferta de a lua ei înșiși de îngrijire :-) Parantezele sunt necesare pentru a efectua o serie de comenzi
3. drop baza de date ecou în cazul în care există test de _%;.> Temp_db.sql
Scrieți în temp_db.sql comandă pentru a șterge bază de date cu același nume, dacă există. test de prefix se face pentru comoditate. Rețineți că variabila buclă este denumită%. - dublu procentul și un singur caracter - acestea sunt caracteristicile. Dacă vom atribui variabile mâinile din bucla, puteți utiliza mai multe caractere, iar valoarea sa va primi așa-%% variabilă
4. echo crea baza de date test_%. Set de caractere utf8 asmblare utf8_general_ci; >> temp_db.sql
Crearea unei baze de date cu codificare UTF-8. Notă> și >>. Prima declarație suprascrie un fișier, al doilea adaugă text la sfârșitul fișierului.
5. utilizează testul de ecou _%. >> temp_db.sql
Modificarea bazei de date curente cu nou-create în scopul de a importa date în ea din dump.sql. Nu uita; la sfârșitul fiecărei solicitări.
6. mysql -uroot -proot>, înainte de a ciclului, am creat fișierul de către operator> și a scris o instrucțiune gol în ea;