Вземане на съдържанието от sql файл и създаване на ...

plevenchani

Registered
Вземане на съдържанието от sql файл и създаване на таблиците от sql файла в база данни

някой ще ми помогне ли
 
Да приемем , че SQL файла ти е sql.sql;

PHP:
<?php

$host = "localhost"; // ДБ хост
$user = "root"; // ДБ потребителско име
$pass = ""; // ДБ парола
$database = "" //базата данни

mysql_connect("$host","$user","$pass"); //Връзка
mysql_select_db("$database"); //Избиране на база данни

$file = "sql.sql";  //пътя до файла 
$sql = file_get_contents($file); //Взимаме съдържанието на файла
$query_result = mysql_query($sql) or die(mysql_error()); //Правим заявката


?>

Успех :)
 
kopura каза:
Да приемем , че SQL файла ти е sql.sql;

PHP:
<?php

$host = "localhost"; // ДБ хост
$user = "root"; // ДБ потребителско име
$pass = ""; // ДБ парола
$database = "" //базата данни

mysql_connect("$host","$user","$pass"); //Връзка
mysql_select_db("$database"); //Избиране на база данни

$file = "sql.sql";  //пътя до файла 
$sql = file_get_contents($file); //Взимаме съдържанието на файла
$query_result = mysql_query($sql) or die(mysql_error()); //Правим заявката


?>

Успех :)

Само за информация, този код пробвал ли си го ? Или го пусна просто така? Я пробвай да сложиш няколко заявки във файла, като например няколко създавания на таблица.


Моето решение:

PHP:
function getSQL($file)
{
        $fh = fopen($file, 'r');
        $text = fread($fh, filesize($file));
        fclose($fh);

        //$pattern = "%(#[^\r\n]+|/\*.*?\*/|//[^\r\n]+)%sim";
        //$text= preg_replace($pattern,'',$text);
        $sep=" |SEP| ";
        $text = preg_replace("/USE/", " $sep USE", $text);
        $text = preg_replace("/DROP/", " $sep DROP", $text);
        $text = preg_replace("/INSERT/", " $sep INSERT", $text);
        $text = preg_replace("/CREATE/", " $sep CREATE", $text);
        $text = preg_replace("/UPDATE/", " $sep UPDATE", $text);
        $text = preg_replace("/ALTER/", " $sep ALTER", $text);

        $sqls = explode($sep, $text);
        
        return $sqls;
}

foreach(getSQL('sql.sql') as $sql){
             if(empty($sql) || !isset($sql)){
                         //Do Nothing
             }
             else{
                        $query = mysql_query($sql);
              }
}

Ето така се ползва, когато имаш много операции във файла.
 
Ако нямаш възможност да ползваш mysqldump, тогава това е решението:

PHP:
<?php
exec("mysql -u USERNAME -pPASSWORD -h HOST DATABASE < file.sql");
?>

Паролата се пише плътно до аргумента -p без интервал между тях.
 

Back
Горе