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

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

Linda Hamilton
Libérer: 2024-10-31 11:30:17
original
906 Les gens l'ont consulté

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

Optimisation de l'importation de bases de données MySQL en PHP : fractionnement fiable des requêtes

Dans le domaine du développement Web, des scénarios surviennent dans lesquels la mise à jour de sites Web hébergés sur des serveurs partagés nécessite des mises à jour de la base de données. Cependant, l’impossibilité d’accéder à MySQL en externe pose un défi. Pour résoudre ce problème, importer un fichier MySQL via PHP devient nécessaire. Cet article explore une solution efficace pour diviser les gros fichiers de base de données MySQL en requêtes individuelles et les importer à l'aide de PHP.

Énoncé du problème

L'objectif est de développer une méthode fiable pour diviser un gros fichier de base de données en requêtes individuelles sans ouvrir l'intégralité du fichier simultanément. Les contraintes incluent l'indisponibilité de la fonction de ligne de commande MySQL, LOAD DATA INFILE, phpMyAdmin et mysqli_multi_query().

Solution : Fonction SplitSQL

La solution réside dans une mémoire -fonction conviviale appelée SplitSQL, qui parcourt le fichier ligne par ligne et identifie les caractères délimiteurs de requête. Il accumule les lignes dans un tableau jusqu'à ce qu'un délimiteur soit rencontré, formant ainsi une requête complète. La fonction exécute ensuite la requête et fournit des commentaires sur son succès ou son échec.

Mise en œuvre

<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;
}</code>
Copier après la connexion

Tests et résultats

Lors de tests avec un grand dump SQL phpMyAdmin, la fonction SplitSQL a donné des résultats positifs. Les exemples d'entrée et de sortie sont les suivants :

Données de test

<code class="sql">CREATE TABLE IF NOT EXISTS "test" (
    "id" INTEGER PRIMARY KEY AUTOINCREMENT,
    "name" TEXT,
    "description" TEXT
);

BEGIN;
    INSERT INTO "test" ("name", "description")
    VALUES (";;;", "something for you mind; body; soul");
COMMIT;

UPDATE "test"
    SET "name" = "; "
    WHERE "id" = 1;</code>
Copier après la connexion

Sortie

SUCCESS: CREATE TABLE IF NOT EXISTS "test" ( "id" INTEGER PRIMARY KEY AUTOINCREMENT, "name" TEXT, "description" TEXT );
SUCCESS: BEGIN;
SUCCESS: INSERT INTO "test" ("name", "description") VALUES (";;;", "something for you mind; body; soul");
SUCCESS: COMMIT;
SUCCESS: UPDATE "test" SET "name" = "; " WHERE "id" = 1;
Copier après la connexion

Conclusion

La fonction SplitSQL fournit une solution fiable pour diviser les gros fichiers de base de données MySQL en requêtes individuelles et les exécuter à l'aide de PHP. Il répond efficacement aux contraintes susmentionnées et permet l'importation automatisée des mises à jour de la base de données. Cette approche garantit une maintenance transparente des bases de données dans les environnements d'hébergement partagé.

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!