Aylık Arşiv: Eylül 2012

MySQL – Dump Alırken Limit Belirleme

Merhaba, bazen çok yüksek boyuttaki veritabanlarından dump alınması gerekebiliyor. Ama genelde geliştirme ortamları için veritabanının tamamı değilde bir kısmı alınsa yeterli olabiliyor.

Bu durumda MySQL’den dump alırken; her tablodan en fazla 100 satır getir şeklinde bir koşul belirtebiliyorsunuz.

Bu şekilde dump almanın yöntemi şöyle:

 mysqldump --where="true LIMIT 100" -uroot -p123 test > test.sql
 

-u ve -p parametrelerini kendi bilgilerinize göre değiştirmeyi unutmayın.

 
1 Kudos
Don't move

PHP – Database’in Tamamında Arama Yapmak

Full-text search özelliğine sahip olmayan bir MySQL engine’da tüm alanlarda arama yapılması gerekmişti.

Ben de yazmış olduğum bir kodu örnek olması için koydum.

Açıklamaları kodun içine comment olarak ekledim.

class DBSearch {
     
    function __construct($keyword){
        $this->keyword = $keyword;
    }
     
    function DBConnect(){
        $this->db = new PDO("mysql:dbname=test;host=localhost", "root", "");
        return $this;
    }
     
    // Veritabanındaki tüm tablolar döndürüldü.
    function getTables(){
        $mtch = $this->db->query('SHOW TABLES');
        $this->tables = $mtch->fetchAll();
        return $this;
    }
     
    // İstenen tablodaki sütunlar (kolonlar) döndürüldü.
    function getColumns($table){
        $mtch = $this->db->query('SHOW COLUMNS FROM ' . $table);
        return $mtch->fetchAll();
    }
     
    function matches($searchSQL){
        $src = $this->db->query($searchSQL);
            if($src->rowCount() > 0){
                $view  = null;
                $view .= "------------------------------------------\n";
                $view .= "Tablo: " . $this->tbls[0] . "\n";
                $view .= "Sorgu: " . $searchSQL;
                $view .= "\n------------------------------------------\n";
                echo $view;            
            }            
        }
     
    // Tablolarda arama işlemi burada gerçekleşiyor.    
    function initalize(){
        foreach($this->tables as $this->tbls){
             
            $columns = $this->getColumns($this->tbls[0]);
             
            $searchSQL = sprintf("SELECT * FROM %s WHERE %s LIKE '%%%s%%'", $this->tbls[0], $columns[0][0], $this->keyword);
 
            unset($columns[0][0]);
 
            foreach($columns as $clmns){
                $searchSQL .= sprintf(" OR %s LIKE '%%%s%%'",$clmns['Field'], $this->keyword);
            }
             
            // Sorgu hazırlandıktan sonra işletilmek üzere matches() gönderiliyor.
            $this->matches($searchSQL); 
        }
    }
}
 
$search = new DBSearch('deneme');
$search->DBConnect()
       ->getTables();
$search->initalize();

Sprintf fonksiyonunu kullanımı için daha önce yazdığım yazıya buraya tıklayıp gözatabilirsiniz.

 
45 Kudos
Don't move