Dans le domaine du développement Web, la nécessité d'importer des fichiers de base de données volumineux tout en utilisant couramment des fournisseurs d'hébergement partagé surgit. Malheureusement, l'accès à MySQL via la ligne de commande peut être restreint, ce qui nécessite une solution basée sur PHP pour analyser et exécuter les requêtes.
Pour relever ce défi, une fonction robuste connue sous le nom de SplitSQL() a été développée pour diviser de manière fiable un fichier de base de données en requêtes individuelles sans consommer de mémoire excessive.
SplitSQL() exploite une approche de lecture de fichier, en parcourant le fichier ligne par ligne. Il identifie les requêtes en détectant le délimiteur spécifié (; par défaut) en fin de ligne. Une fois qu'une requête complète est assemblée, elle est exécutée immédiatement à l'aide de 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);
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3