Takip et

MySQL Veritabanını PHP Kullanarak SQL Dosyasından Geri Yükleme

Merhaba, veritabanı geri getirme yada import işlemleri bildiğiniz üzere genellikle, phpMyAdmin’in içe aktarma bölümünden, yada veritabanı işlem programlarının restore bölümlerinden yapılır. MySQL veritabanlarının tablolarını ve datalarını geri yüklemek için çeşitli seçenekler mevcuttur. SQL dosyasını veritabanına aktarmak için barındırma sunucunuza, arayüz araçlarına yada phpMyAdmin’e giriş yapmanız gerekir. Ancak, bu işlem PHP kod betikleri ile de yapılabilir. Bu makalede PHP betikleri yardımıyla DB restore işlemini öğrenmiş olacaksınız.

PHP dosyasından veritabanını geri yüklemek, kullanıcının web uygulamasından veritabanını geri yüklemesine izin vermek istediğinizde çok işinize yarayacak bir işlemdir. Tabi bir o kadar da tehlikeli bir işlemdir. MySQL veritabanı tablolarını içe aktarmak için önce veritabanının yedeğinin alınması gerekir. Bu makalede, PHP’yi kullanarak SQL dosyasından veritabanını nasıl geri yükleyeceğimizi göstereceğim. Basit PHP betiğimiz, MySQL veritabanını SQL dosyasından geri yüklemeye yardımcı olacak.

PHP kullanarak MySQL Veritabanı Geri Yükleme

Daha işlevsel kullanılabilirlik için tüm PHP kodlarını restoreDatabaseTables() fonksiyonunda topladım. PHP aracılığıyla restoreDatabaseTables() fonksiyonunu kullanarak, veritabanındaki tabloları .sql dosyasından geri yükleyebilirsiniz. MySQL veritabanını geri yüklemek için aşağıdaki parametreler gereklidir.

  • $dbHost Zorunlu. Veritabanının ana sunucusunu belirtir.
  • $dbUsernameZorunlu. Veritabanı kullanıcı adını belirtir.
  • $dbPasswordZorunlu. Veritabanı şifresini belirtir.
  • $dbNameZorunlu. Yedeklemek istediğiniz veritabanı adını belirtir.
  • $filePathZorunlu. SQL dosyasının, tabloların geri yükleneceği yolu belirtir.
/**
 * @function    restoreDatabaseTables
 * @author      Fatih Soysal
 * @link        http://www.fatihsoysal.com
 * @usage       MySQL Veritabanını PHP Kullanarak SQL Dosyasından Geri Yükleme
 */
function restoreDatabaseTables($dbHost, $dbUsername, $dbPassword, $dbName, $filePath){
    // Veritabanı bağlantısı
    $db = new mysqli($dbHost, $dbUsername, $dbPassword, $dbName); 

    // Geçici değişken, geçerli sorguyu depolamak için kullanılır
    $templine = '';
    
    // Tüm dosyayı oku
    $lines = file($filePath);
    
    $error = '';
    
    // Her satır için dönelim
    foreach ($lines as $line){
        // Skip it if it's a comment
        if(substr($line, 0, 2) == '--' || $line == ''){
            continue;
        }
        
        // Bu satırı geçerli segmente ekle
        $templine .= $line;
        
        if (substr(trim($line), -1, 1) == ';'){
            // Perform the query
            if(!$db->query($templine)){
                $error .= 'Error performing query "<b>' . $templine . '</b>": ' . $db->error . '<br /><br />';
            }
            
            // Geçici değişkeni sıfırlayalım
            $templine = '';
        }
    }
    return !empty($error)?$error:true;
}

Kullanımı:

SQL dosyasından MySQL veritabanını geri yüklemek için yukarıda yazmış olduğumuz restoreDatabaseTables() fonksiyonunu kullanmamız yeterli.

$dbHost     = 'localhost';
$dbUsername = 'root';
$dbPassword = 'ABC132';
$dbName     = 'DB_TEST';
$filePath   = 'YEDEK/15.02.18.sql';

restoreDatabaseTables($dbHost, $dbUsername, $dbPassword, $dbName, $filePath);

Makalemi okuduğunuz için teşekkür ederim. Bir sonraki makalede görüşmek üzere. Soru, görüş ve önerileriniz için alt taraftan yorum bölümünü kullanabilirsiniz. Sağlıkla, huzurla kalın.

Yorumlar
İçeriği beğendiniz mi? Bir tartışma başlatın veya görüşlerinizi paylaşın.
Yorumları Göster (1)

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

  1. Merhaba Fatih üstadım,

    Ms SQL Serverdeki bir tabonun iki ayrı sütünunda bulunan bilgileri FreeBSD için MySql database ye aktamak hakkında beni yönlendirebilirmisin veya bildiğiniz bir döküman varmıdır.

    Teşekkür eder, iyi çalışmalar dilerim.

    by Selçuk BAŞAR
E-posta Bülteni
Yazılım Topluluğuna Katılın
En son güncellemeleri, yaratıcı ipuçlarını ve özel kaynakları doğrudan e-posta kutunuza alın. Tasarım ve inovasyonun geleceğini birlikte keşfedelim.