Mysql Dump dosyasından teker teker DB’leri çıkartma
Genellikle sunucu toptan yedekleme/bakım araçlarında, bütün sunucu databaseleri tek bir dosya halinde dump alınır. GB’lara varan bu koca dosya içinden tek bir veritabanını çıkarmak içinse bufferları şişen editörler yetersiz kalır. Bu durumda, *nix işletim sisteminde aşağıdaki senaryoyu uygulayabilirsiniz:
Öncelikle, SQL Dump’ımızda hangi veritabanları olduğuna bakalım:
> grep -n “Current Database: ” huge_sql_file.sql
358:– Current Database: `dating`
1111:– Current Database: `lang`
1145:– Current Database: `mmdb`
1213:– Current Database: `mysql`
1738:– Current Database: `sendstudionx`
3544:– Current Database: `servicemonitor`
3659:– Current Database: `tube_sx`
3868:– Current Database: `tube_work`
4077:– Current Database: `test`
4824:– Current Database: `workling`
5242:– Current Database: `updates`
5278:– Current Database: `lycos`
5333:– Current Database: `wp_deneme`
…
Burada, hangi veritabanını istiyorsak, onun ve bir sonraki veritabanın satır numaralarını not ediyoruz. İstediğimiz dosya, bu satır numaraları arasındaki verilerden oluşuyor.
Örneğin workling veritabanı için, başlangıç 4077 ve bitiş 4824.
Bir dosyanın buffer harcamadan başındaki veri için head, ve sonundaki veri için tail komutunu kullanıyoruz, bu ikisinin kombinasyonuyla verilen iki satır numarası arasındaki veriyi okuyabiliriz ve > operatörüyle bir dosyaya aktarabiliriz:
> tail -n +4824 server_cycle_01.sql | head -n $((5242-4824)) > workling.sql

Ağustos 27th, 2009 @ 4:39 pm
Mesajin icin tskler.
güzel bilgi nezaman lazim olacagi belli olmaz.
sagol
ps. nickimi skrp dan skorp a degise bilirmisin :)
Ağustos 27th, 2009 @ 4:43 pm
ben tesekkür ederim, degistirdim :-)