„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Wie importiert man große MySQL-Dateien effizient in Shared Hosting mit PHP?

Wie importiert man große MySQL-Dateien effizient in Shared Hosting mit PHP?

Veröffentlicht am 19.11.2024
Durchsuche:960

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

Effizienter MySQL-Dateiimport in PHP: Aufteilen von Abfragen für Shared Hosting

Im Bereich der Webentwicklung besteht die Notwendigkeit, große Datenbankdateien zu importieren und dabei häufig Shared-Hosting-Anbieter zu verwenden entsteht. Leider kann der Zugriff auf MySQL über die Befehlszeile eingeschränkt sein, sodass eine PHP-basierte Lösung zum Parsen und Ausführen von Abfragen erforderlich ist.

Um dieser Herausforderung zu begegnen, wurde eine robuste Funktion namens SplitSQL() entwickelt, um a zuverlässig aufzuteilen Datenbankdatei in einzelne Abfragen aufteilen, ohne übermäßig viel Speicher zu verbrauchen.

Wie es funktioniert

SplitSQL() nutzt einen Dateileseansatz, bei dem die Datei Zeile für Zeile durchlaufen wird. Es identifiziert Abfragen, indem es das angegebene Trennzeichen (standardmäßig;) am Ende einer Zeile erkennt. Sobald eine vollständige Abfrage zusammengestellt ist, wird sie sofort mit mysql_query() ausgeführt.

Hauptfunktionen

  • Speichereffizient: Dadurch wird vermieden, dass die gesamte Abfrage geladen werden muss Datei in den Speicher, SplitSQL() eignet sich für die Verarbeitung großer Dateien ohne Leistungsprobleme.
  • Fehlertoleranz: Wenn eine Abfrage fehlschlägt, werden Fehlermeldungen zu Debugging-Zwecken angezeigt.
  • Ausgabepufferung: Um Speichererschöpfung zu verhindern, löscht SplitSQL() die Ausgabe nach jeder Abfrageausführung.

Verwendungsbeispiel

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);
Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3