"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como importar arquivos grandes do MySQL com eficiência para hospedagem compartilhada usando PHP?

Como importar arquivos grandes do MySQL com eficiência para hospedagem compartilhada usando PHP?

Publicado em 19/11/2024
Navegar:600

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

Importação eficiente de arquivos MySQL em PHP: divisão de consultas para hospedagem compartilhada

No domínio do desenvolvimento web, é comum a necessidade de importar grandes arquivos de banco de dados ao usar provedores de hospedagem compartilhada surge. Infelizmente, o acesso ao MySQL através da linha de comando pode ser restrito, necessitando de uma solução baseada em PHP para analisar e executar consultas.

Para enfrentar esse desafio, uma função robusta conhecida como SplitSQL() foi desenvolvida para dividir de forma confiável um arquivo de banco de dados em consultas individuais sem consumir memória excessiva.

Como funciona

SplitSQL() aproveita uma abordagem de leitura de arquivo, iterando através do arquivo linha por linha. Ele identifica consultas detectando o delimitador especificado (; por padrão) no final de uma linha. Depois que uma consulta completa é montada, ela é executada imediatamente usando mysql_query().

Principais recursos

  • Eficiente em memória: Evitando a necessidade de carregar a consulta inteira arquivo na memória, SplitSQL() é adequado para lidar com arquivos grandes sem problemas de desempenho.
  • Tolerância a falhas: Se uma consulta falhar, erro as mensagens são exibidas para fins de depuração.
  • Buffering de saída: Para evitar o esgotamento da memória, SplitSQL() libera a saída após cada execução de consulta.

Exemplo 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);
Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3