PHP ile MySQL yedek
Beedon için bir veritabanı yedekleme modülü yazmam gerekliydi. Bunu mysql_dump'ı system() ile çağırarak yapabilrdim. Ancak system() kullanmak pek mantıklı değil.
Tabloları listeleyip, her tablonun alan bilgisini alıp tabloları oluşturmak, sonra alan içeriğini ise insert into'lar şeklinde hazırlayabilirdim. İlk başta böyle yapıyordum ki alan bilgileri ile create table komutlarını veren çok güzel bir mysql komutu varmış : show create table.
Bunun yardımı ile aşağıdaki kodu yazdım.
Postgresql'i çalıştırabilirsem onun için de birşeyler denerim sanırım.


Düzeltme: Aşağıdaki kodların görüntülenmesindeki bir hataya karşı https://raw.github.com/yuxel/SqlDumb/master/SqlDumb.php adresinden kodun son halini bulabilirsiniz.


<?php
/*-------------------------------------------
MySQL veritabanı yedekleme kodu
Aşağıdaki değişkenleri ayarlayın
Kullanımdan doğacak hatalardan yazar sorumlu tutulamaz
* MySQL 3.23.20 veya üzeri bir veritabanı sunucunuz olmalı

Osman Yüksel  11.02.2005
--------------------------------------------*/
$vthost="localhost";    //veritabanı host
$vtkullanici="root";    //veritabanı kullanıcı adı
$vtsifre="";        //veritabanı şifresi
$vtadi="blo";        //yedeklenecek veritabanı adı
$ara="";        /*--eğer sadece belli bir önek veya belli bir tablonun 
            //yedeklenmesini istiyorsanız bunu kullanabilirsiniz
            ara="aranacak" gibi bir değer belirlerseniz sadece 
            içersinde "aranacak" geçen tablolar yedeklenecektir*/
$dosya_adi="yedek.sql";    //yedeklerin yazılacağı dosya

/*------------------------------------*/

if(!is_writeable(".")) echo "Yazma izniniz bulunmuyor";
else 
{
  
$baglan=mysql_connect($vthost,$vtkullanici,$vtsifre); 
  
$sec=mysql_select_db($vtadi,$baglan);
  if(!
$sec) { echo "Veritabanına bağlanılamadı"; }
  else
    {
      
$tablolar=mysql_list_tables($vtadi);  //tablo listesi
      
$tablosayisi=mysql_num_rows($tablolar); //veritabanındaki tablo sayısını bul
      
for ($a=0;$a<$tablosayisi;$a++) 
    {  
// her tablo için işlem yap
      
$row=mysql_fetch_row($tablolar);   
      if(
preg_match("/$ara/"$row[0]))
        {  
//sadece belirli ön ekle başlayanları al
          
$tablename=$row[0];
          
$crtable=mysql_query("show create table $tablename");  
          
//her tablo için show create table komutu ile iste
          //bu özellik MySQL 3.23.20 den itibaren var
          
$tmpres mysql_fetch_row($crtable);
          
$cikti .= $tmpres[1].";";  //create table'ların sonuna ; koy
          
$cikti .= "nnn";  //create table komutlarından sonra 3 satır boşluk ver
          
$alanlar=mysql_query("select * from `$tablename`");  
          
//her field için insert into komutlarını hazırla
          
$alansayisi=mysql_num_fields($alanlar);  //alan sayısı
          
$nr=mysql_num_rows($alanlar);  //row sayısı
          
for ($c=0;$c<$nr;$c++)
        { 
//her row için 
          
$cikti .= "insert into `$tablename` values (";
          
$row=mysql_fetch_row($alanlar);  //alan adlarını ' karakterleriyle yazdır
          
for ($d=0;$d<$alansayisi;$d++) 
            {
              
$data=strval($row[$d]);
              
$cikti .="'".addslashes($data)."'";  // ' i kontrol için
              
if ($d<($alansayisi-1)) 
            {
              
$cikti .=", ";  //her alan için araya virgül koy
            
#if
            
#for
                
$cikti .=");n"// parantezi kapat
        
#for
        
#if ->ön ekleri al
    
#if  ->her tablo için 

    
      
$yaz=fopen($dosya_adi"w");  //$cikti'yi $dosya_adi'na yazdir
      
fwrite($yaz,$cikti);
      
fclose($yaz);
      echo 
"Veritabanı yedeği $dosya_adi dosyasına kaydedildi";

    } 
#else  -> veritabanı bağlantı kontrolü

    
mysql_close($baglan);
#else  yazma kontrolü
?>



12.Şubat.2005 Cumartesi :: 00:44:39   74213 kere okundu

Konular
Opera {39}
Müzik {70}
Qt {12}
Ben {122}
Debian {26}
Sinema {24}
php/web {44}
Link {58}
KDE {7}

[Konular]


Takvim
<  Mart 2024  >
PSÇPCCtPz
123
45678910
11121314151617
18192021222324
25262728293031


Temalar
xmas
yesilozAskerEdition
yellos
yesiloz
uira
yesilozHtml5
darksight
greeny
opera
default
dx

Es Dost
Altan
Tuğrul
Selçuk
Timu
Mehmet
Ünal
Gökhan
Koray Taylan
Yaşar
Özgür
Orhan
Kemali
Ahmet
Emrah
Kıvanç
BilgiFrekans
Bünyamin
Bedava Site

Gez Gör Arpacık
Opera Türkiye
Uira
Ma"Cess"teleri


Projeler
Beedon
sozluQ
qPod
SourPHP
Ekşigator
Ekşigator-qt
Soccer Madness