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

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

Linda Hamilton
Linda HamiltonOriginal
2024-10-31 11:30:17908Durchsuche

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>

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>

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;

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!

Stellungnahme:
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