Import в БД
Пишу скрипт для того чтобы импортировать данные из *.sql файла, пожалуйста посоветуйте как лучше, вот моя поделка:
Код:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta content="text/html; charset=UTF-8" http-equiv="content-type">
<title>Import</title>
</head>
<body>
<?php
global $filename;
$filename = 'myfile.sql';
$_HOST = 'localhost';
$_USER = '';
$_PASS = '';
$_DB = '';
echo('<span style="font-weight: bold;">Import *.sql!</span><br>');
$db = mysql_connect($_HOST,$_USER,$_PASS);
if (empty($db)) {
die("Ошибка соединения".mysql_error());
}
mysql_select_db($_DB);
include ("mysql_create.php");
mysql_close($db);
?>
</body>
</html>
<html>
<head>
<meta content="text/html; charset=UTF-8" http-equiv="content-type">
<title>Import</title>
</head>
<body>
<?php
global $filename;
$filename = 'myfile.sql';
$_HOST = 'localhost';
$_USER = '';
$_PASS = '';
$_DB = '';
echo('<span style="font-weight: bold;">Import *.sql!</span><br>');
$db = mysql_connect($_HOST,$_USER,$_PASS);
if (empty($db)) {
die("Ошибка соединения".mysql_error());
}
mysql_select_db($_DB);
include ("mysql_create.php");
mysql_close($db);
?>
</body>
</html>
Код:
<?php
$i=0;
$j=0;
function find_com($str)
{
if ( stristr($str, '/*') )
{
return true;
}
return false;
}
function find_com_end($str)
{
$pos = strrpos($str, '*/');
if ($pos == false)
{
return false;
}
else
{
$i = 0;
$j = 0;
return true;
}
}
/*
function find_cont($str)
{
$i = $i + substr_count($str, '(');
$j = $j + substr_count($str, ')');
//if ( ( stristr($str, ')') && stristr($str, ';') ) && ( strrpos($str, ';') > strrpos($str, ')') ) ) $j--;
}
*/
function find_query($str)
{
$s[1] = 'CREATE TABLE';
$s[2] = 'INSERT INTO';
$s[3] = 'SET';
//strpos(в чём искать, что искать);
if ( stristr($str, '--') )
return false;
for($i = 1; $i <= 3; $i++)
{
$pos = stristr($str, $s[$i]);
if ($pos)
{
return true;
}
}
return false;
}
function end_query($str)
{
//if (substr($str, -1) == ';')
if ( strrpos($str, ';') < strrpos($str, ')') ) return false;
$pos = strrpos($str, ';');
if ($pos == false)
return false;
else
return true;
}
$handle = fopen($filename, "r");
$newquery = '';
$contents = '';
$q = false;
$c = false;
while (!feof($handle)) {
$contents = fgets($handle);//Считать строку
//find_cont($contents);
if (find_com($contents))
$c = true;
if (find_query($contents) && !$c)
$q = true;
if ($q && !$c)
$newquery .= $contents;
if (find_com_end($contents))
$c = false;
if (end_query($contents))
{
$q = false;
if ($newquery <> '')
{
echo ($newquery.'<br><br>');
mysql_query($newquery);
}
$newquery = '';
}
}
fclose($handle);
?>
$i=0;
$j=0;
function find_com($str)
{
if ( stristr($str, '/*') )
{
return true;
}
return false;
}
function find_com_end($str)
{
$pos = strrpos($str, '*/');
if ($pos == false)
{
return false;
}
else
{
$i = 0;
$j = 0;
return true;
}
}
/*
function find_cont($str)
{
$i = $i + substr_count($str, '(');
$j = $j + substr_count($str, ')');
//if ( ( stristr($str, ')') && stristr($str, ';') ) && ( strrpos($str, ';') > strrpos($str, ')') ) ) $j--;
}
*/
function find_query($str)
{
$s[1] = 'CREATE TABLE';
$s[2] = 'INSERT INTO';
$s[3] = 'SET';
//strpos(в чём искать, что искать);
if ( stristr($str, '--') )
return false;
for($i = 1; $i <= 3; $i++)
{
$pos = stristr($str, $s[$i]);
if ($pos)
{
return true;
}
}
return false;
}
function end_query($str)
{
//if (substr($str, -1) == ';')
if ( strrpos($str, ';') < strrpos($str, ')') ) return false;
$pos = strrpos($str, ';');
if ($pos == false)
return false;
else
return true;
}
$handle = fopen($filename, "r");
$newquery = '';
$contents = '';
$q = false;
$c = false;
while (!feof($handle)) {
$contents = fgets($handle);//Считать строку
//find_cont($contents);
if (find_com($contents))
$c = true;
if (find_query($contents) && !$c)
$q = true;
if ($q && !$c)
$newquery .= $contents;
if (find_com_end($contents))
$c = false;
if (end_query($contents))
{
$q = false;
if ($newquery <> '')
{
echo ($newquery.'<br><br>');
mysql_query($newquery);
}
$newquery = '';
}
}
fclose($handle);
?>