Heim > Datenbank > MySQL-Tutorial > Hauptteil

Wie importiere ich große MySQL-Dateien mit PHP in eine Shared-Hosting-Umgebung?

Linda Hamilton
Freigeben: 2024-10-31 11:30:17
Original
907 Leute haben es durchsucht

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

MySQL-Datenbankimport in PHP optimieren: Abfragen zuverlässig aufteilen

Im Bereich der Webentwicklung treten Szenarien auf, in denen Websites aktualisiert werden, die auf gemeinsam genutzten Servern gehostet werden erfordert Datenbankaktualisierungen. Allerdings stellt die fehlende Möglichkeit, von außen auf MySQL zuzugreifen, eine Herausforderung dar. Um dieses Problem zu beheben, ist der Import einer MySQL-Datei über PHP erforderlich. In diesem Artikel wird eine effiziente Lösung untersucht, um große MySQL-Datenbankdateien in einzelne Abfragen aufzuteilen und sie mithilfe von PHP zu importieren.

Problemstellung

Ziel ist es, eine zuverlässige Methode für zu entwickeln Aufteilen einer großen Datenbankdatei in einzelne Abfragen, ohne die gesamte Datei gleichzeitig zu öffnen. Zu den Einschränkungen gehört die Nichtverfügbarkeit der MySQL-Befehlszeilenfunktion LOAD DATA INFILE, phpMyAdmin und mysqli_multi_query().

Lösung: SplitSQL-Funktion

Die Lösung liegt in einem Speicher -freundliche Funktion namens SplitSQL, die die Datei Zeile für Zeile durchläuft und Abfragetrennzeichen identifiziert. Es sammelt Zeilen in einem Array, bis ein Trennzeichen gefunden wird, und bildet so eine vollständige Abfrage. Die Funktion führt dann die Abfrage aus und gibt Rückmeldung über deren Erfolg oder Misserfolg.

Implementierung

<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>
Nach dem Login kopieren

Testen und Ausgabe

Beim Testen mit einem großen phpMyAdmin-SQL-Dump lieferte die SplitSQL-Funktion erfolgreiche Ergebnisse. Beispieleingabe und -ausgabe lauten wie folgt:

Testdaten

<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>
Nach dem Login kopieren

Ausgabe

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;
Nach dem Login kopieren

Fazit

Die SplitSQL-Funktion bietet eine zuverlässige Lösung, um große MySQL-Datenbankdateien in einzelne Abfragen aufzuteilen und diese mit PHP auszuführen. Es beseitigt effektiv die oben genannten Einschränkungen und ermöglicht den automatisierten Import von Datenbankaktualisierungen. Dieser Ansatz gewährleistet eine nahtlose Datenbankwartung in Shared-Hosting-Umgebungen.

Das obige ist der detaillierte Inhalt vonWie importiere ich große MySQL-Dateien mit PHP in eine Shared-Hosting-Umgebung?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!