En el ámbito del desarrollo web, la necesidad de importar archivos de bases de datos de gran tamaño mientras se utilizan proveedores de alojamiento compartido comúnmente surge. Desafortunadamente, el acceso a MySQL a través de la línea de comandos puede estar restringido, lo que requiere una solución basada en PHP para analizar y ejecutar consultas.
Para abordar este desafío, se ha desarrollado una función sólida conocida como SplitSQL() para dividir de manera confiable un archivo de base de datos en consultas individuales sin consumir demasiada memoria.
SplitSQL() aprovecha un enfoque de lectura de archivos, iterando a través del archivo línea por línea. Identifica consultas detectando el delimitador especificado (; por defecto) al final de una línea. Una vez que se ensambla una consulta completa, se ejecuta inmediatamente usando 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);
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3