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) à la fin d'une ligne. Une fois qu'une requête complète est assemblée, elle est exécutée immédiatement à l'aide de mysql_query().
<code class="php">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);</code>
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!