Sql dosyasından sql sorguyu çalıştır

4 Cevap

Ben veritabanı için bir veritabanı "dükkan" tüm tabloları dahil etmek istediğiniz newshop. Ben "dükkan" veritabanı ihracat, ve şimdi shop.sql olarak adlandırılır. Yerine veritabanına doğrudan ithal o dosyanın tüm sorguyu yürütmek için herhangi bir yolu var mı newshop.

4 Cevap

Ben olabileceğini gerekenler düşünüyorum:

$ mysql -u $USERNAME -p < "$SQLFILENAME"

$ USERNAME root $ ve SQLFILENAME (bu durumda 'shop.sql') sql dosyasının adıdır gibi mysql kullanıcı adıdır.

Yukarıdaki komut şifre yazmak isteyecektir. '- Şifre = $ PAROLA' AMA dikkatli olması bunu her zaman yapmak istemiyorsanız, siz de kullanabilirsiniz. Bu şifre, tarihte kaydedilmiş olabilir ve (PHP onu çalıştırırsanız, bu bir sorun olmayabilir) yanlış elinde olabilir.

OR bunu çalıştırmak için mysqli kullanabilirsiniz.

<?php
$link = mysqli_connect("localhost", "my_user", "my_password", "world");

/* check connection */
if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}

$query = file_get_contents("shop.sql");

/* execute multi query */
if (mysqli_multi_query($link, $query))
     echo "Success";
else 
     echo "Fail";
?>

Umarım bu yardımcı olur.

>>> mysql -u username -p
>>> show databases;
>>> use foo;
>>> source /home/mannu/file.sql

Ben sizin için ne arıyorsanız inanıyorum? Yoksa yanlış mı?

Bu soruyu göz önüne alındığında PHP ile etiketlenmiş, burada bunu nasıl bulunuyor:

mysql_query('USE newshop');
$queries = file('shop.sql');
while(list($i, $query) = each($queries)){
    $query = trim($query, ';');
    if(!empty($query) && $query != 'USE shop'){
        @mysql_query($query);
    }
}

Emin olun "USE shop" SQL dosyasında kullanılır olursa olsun sözdizimi if deyimi maçta. Örneğin, o USE 'shop' veya USE schemaname.shop yapmak gerekebilir. Ya da, tüm orada hiç USE komutu varsa, sadece dışarı doğru bu durumu alabilir.

İşte kod size might be interested in:

<?php

  $dbhost = 'localhost';
  $dbuser = 'root';
  $dbpass = 'password';
  $db = 'newshop';
  $file =dirname(__FILE__).'\\'.'shop.sql';
  $mySQLDir='"C:\\Program Files\\MySQL\\MySQL Server 5.1\\bin\\mysql.exe"';



    if ($dbpass != '') {
        $cmd = $mySQLDir.' -h '.$dbhost.' --user='.$dbuser.' --password='.$dbpass.' < "'.$file.'"';

    } else {
        $cmd = $mySQLDir.' -h '.$dbhost.' --user='.$dbuser.' < "'.$file.'"';
    }

     echo $cmd;  

   exec('"'.$cmd.'"',$out ,$retval);
   echo "\n";
    echo ($retval);

?>