Maison > base de données > tutoriel mysql > le corps du texte

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

Susan Sarandon
Libérer: 2024-10-28 10:17:02
original
243 Les gens l'ont consulté

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>
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!