"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cómo importar de manera eficiente archivos MySQL grandes a un alojamiento compartido usando PHP?

¿Cómo importar de manera eficiente archivos MySQL grandes a un alojamiento compartido usando PHP?

Publicado el 2024-11-19
Navegar:763

How to Efficiently Import Large MySQL Files into Shared Hosting Using PHP?

Importación eficiente de archivos MySQL en PHP: división de consultas para alojamiento compartido

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.

Cómo funciona

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().

Características clave

  • Eficiente en memoria: Al evitar la necesidad de cargar la consulta completa archivo en la memoria, SplitSQL() es adecuado para manejar archivos grandes sin problemas de rendimiento.
  • Tolerancia a fallos: Si una consulta falla, los mensajes de error se muestran con fines de depuración.
  • Búfer de salida: Para evitar el agotamiento de la memoria, SplitSQL() vacía la salida después de cada ejecución de consulta.

Ejemplo de uso

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);
Último tutorial Más>

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