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