Im Bereich der Webentwicklung besteht die Notwendigkeit, große Datenbankdateien zu importieren und dabei häufig Shared-Hosting-Anbieter zu verwenden entsteht. Leider kann der Zugriff auf MySQL über die Befehlszeile eingeschränkt sein, sodass eine PHP-basierte Lösung zum Parsen und Ausführen von Abfragen erforderlich ist.
Um dieser Herausforderung zu begegnen, wurde eine robuste Funktion namens SplitSQL() entwickelt, um a zuverlässig aufzuteilen Datenbankdatei in einzelne Abfragen aufteilen, ohne übermäßig viel Speicher zu verbrauchen.
SplitSQL() nutzt einen Dateileseansatz, bei dem die Datei Zeile für Zeile durchlaufen wird. Es identifiziert Abfragen, indem es das angegebene Trennzeichen (standardmäßig;) am Ende einer Zeile erkennt. Sobald eine vollständige Abfrage zusammengestellt ist, wird sie sofort mit mysql_query() ausgeführt.
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);
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3