В сфере веб-разработки часто возникает необходимость импортировать большие файлы базы данных при использовании провайдеров общего хостинга. возникает. К сожалению, доступ к MySQL через командную строку может быть ограничен, что требует решения на основе PHP для анализа и выполнения запросов.
Для решения этой проблемы была разработана надежная функция, известная как SplitSQL(), позволяющая надежно разделить файл базы данных на отдельные запросы без использования лишней памяти.
SplitSQL() использует подход чтения файлов, проходя по файлу построчно. Он идентифицирует запросы, обнаруживая указанный разделитель (; по умолчанию) в конце строки. Как только полный запрос собран, он немедленно выполняется с помощью mysql_query().
function SplitSQL($file, $delimiter = ';')
{
set_time_limit(0);
if (is_file($file) === true)
{
$file = fopen($file, 'r');
if (is_resource($file) === true)
{
$query = array();
while (feof($file) === false)
{
$query[] = fgets($file);
if (preg_match('~' . preg_quote($delimiter, '~') . '\s*$~iS', end($query)) === 1)
{
$query = trim(implode('', $query));
if (mysql_query($query) === false)
{
echo '<h3>ERROR: ' . $query . '</h3>' . "\n";
}
else
{
echo '<h3>SUCCESS: ' . $query . '</h3>' . "\n";
}
while (ob_get_level() > 0)
{
ob_end_flush();
}
flush();
}
if (is_string($query) === true)
{
$query = array();
}
}
return fclose($file);
}
}
return false;
}
// Test data
$file = '/path/to/db_dump.sql';
SplitSQL($file);
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3