„Exceptînd expresia naturală de răutate de pe fața lui, pe care cu toții o avem, omul părea destul de onest.”Mark Twain

MySQL: cum să copiezi tabele între baze de date

10 iunie 2012 | Comentariile sunt închise pentru MySQL: cum să copiezi tabele între baze de date

Aveam nevoie să copiez cîteva zeci de tabele dintr-o bază de date în alta. Cu un search pe DuckDuckGo am găsit imediat un răspuns parțial:

mysqldump -u(username) -p(password) (source database name) (table names...) | mysql -u(username) -p(password) (destination database name)
Sursa: Dave Crane’s blog

Cum însă nici prin minte nu-mi trecea să scriu în linia de comandă întreg pomelnicul de nume de tabelă, am produs următorul cod (bash), care permite și filtrarea tabelelor cu o expresie regulată:

for T in 'echo "show tables" | mysql -u(user) -p(pass) (source_db) | grep "(regexp)"'; do 'mysqldump -u(user) -p(pass) (source_db) $T | mysql -u(user) -p(pass) (destination_db)'; done

Notă: tot ce este inclus între paranteze rotunde trebuie înlocuit cu informațiile specifice utilizatorului/bazelor de date – evident fără a păstra parantezele. De asemenea, peste tot unde apare ' (apostrof) ar trebui să fie de fapt ` (backtick), dar le-am înlocuit pentru că se îneca pluginul de colorare sintactică cu ele.

Nu pretind că ar fi cea mai elegantă soluție, nu mă pricep foarte bine la bash scripting. Dar funcționează și momental e tot ce contează.

Categorizat: Dev | Etichetat: , |