Maison  >  Article  >  base de données  >  Comment importer efficacement des fichiers MySQL volumineux dans un hébergement partagé à l'aide de PHP ?

Comment importer efficacement des fichiers MySQL volumineux dans un hébergement partagé à l'aide de PHP ?

Susan Sarandon
Susan Sarandonoriginal
2024-10-28 10:17:02244parcourir

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

Importation efficace de fichiers MySQL en PHP : fractionnement des requêtes pour l'hébergement partagé

Dans le domaine du développement Web, la nécessité d'importer des fichiers de base de données volumineux tout en utilisant couramment des fournisseurs d'hébergement partagé surgit. Malheureusement, l'accès à MySQL via la ligne de commande peut être restreint, ce qui nécessite une solution basée sur PHP pour analyser et exécuter les requêtes.

Pour relever ce défi, une fonction robuste connue sous le nom de SplitSQL() a été développée pour diviser de manière fiable un fichier de base de données en requêtes individuelles sans consommer de mémoire excessive.

Comment ça marche

SplitSQL() exploite une approche de lecture de fichier, en parcourant le fichier ligne par ligne. Il identifie les requêtes en détectant le délimiteur spécifié (; par défaut) à la fin d'une ligne. Une fois qu'une requête complète est assemblée, elle est exécutée immédiatement à l'aide de mysql_query().

Principales caractéristiques

  • Efficacité en mémoire : En évitant d'avoir à charger l'intégralité fichier en mémoire, SplitSQL() convient au traitement de fichiers volumineux sans problèmes de performances.
  • Tolérance aux pannes : Si une requête échoue, des messages d'erreur sont affichés à des fins de débogage.
  • Mise en mémoire tampon de sortie :Pour éviter l'épuisement de la mémoire, SplitSQL() vide la sortie après chaque exécution de requête.

Exemple d'utilisation

<code class="php">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);</code>

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn