Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Wie importiere ich mehr als 100000 Datensätze in eine MySQL-Datenbank?

Die Fehlermeldung ist ziemlich klar und weist Sie auf das Problem hin:die Begrenzung der Ausführungszeit in Ihrer PHP-Umgebung. Einige Lösungsansätze liegen also auf der Hand:

  1. Erhöhen Sie das Zeitlimit Ihrer Umgebung

Sie können dies tun, indem Sie entweder das Limit in Ihrer PHP-Konfiguration erhöhen oder, falls zulässig, es in Ihrem Importskript dynamisch erhöhen. Also etwas wie ini_set('max_execution_time', 3000) . Beide Optionen sind dokumentiert. Die PHP-Dokumentation sollte immer der erste Ort sein, an dem Sie anfangen sollten, nach einer Antwort auf eine solche Frage zu suchen.

  1. verwenden Sie eine andere PHP-Umgebung

Typischerweise wird eine solche Einschränkung für eine Webumgebung gewählt, um das Risiko zu reduzieren, Anfragen von irgendjemandem da draußen zu bedienen. Es spricht jedoch nichts dagegen, für eine andere Umgebung eine andere Konfiguration zu verwenden. Importaufträge sind in der Regel nicht verarbeitet, indem Webanfragen verwendet werden, sondern PHP in der Befehlszeile (CLI). Dafür wird typischerweise eine separate Konfiguration verwendet. Auch dies wird dokumentiert. Das können Sie hier nutzen, um beide Umgebungen unterschiedlich nach Ihren Bedürfnissen zu konfigurieren. Dafür benötigen Sie jedoch Zugriff auf PHP auf der CLI. Das ist auf Ihrem eigenen System kein Problem, aber normalerweise nicht bei einem billigen Webhosting-Dienst verfügbar.

  1. Teilen Sie Ihren Import in kleinere Teile auf

Da die importierten Daten in einer SQL-Datei gespeichert sind, also einer einfachen Textdatei, können Sie diese Datei mit jedem gewöhnlichen Texteditor ändern. Hinweis:ein Texteditor, nicht eine Textverarbeitung. Sie können das große INSERT aufteilen die darin enthaltene Anweisung in mehrere Teile. Die Syntax ist ziemlich offensichtlich.

  1. benutze viele separate Insert-Anweisungen statt einer großen

Je nachdem, welches Tool Sie verwenden, um die Dump-Datei zu erstellen, die Sie jetzt zu importieren versuchen, haben Sie die Möglichkeit, den Dump so zu erstellen, dass er viele separate INSERT verwendet Anweisungen (eine für jede Zeile) anstelle einer großen, kombinierten. mysqldump bietet zum Beispiel den --skip-extended-insert an Flagge dafür. Bei einer solchen Dump-Datei ist es trivial, den Import in mehrere kleinere Chunks aufzuteilen, indem man einfach die Datei aufteilt.

  1. php für den Import komplett umgehen

Wenn Sie direkten Zugriff auf Ihren Datenbankserver (in diesem Fall MySQL) haben, können Sie einfach direkt damit interagieren, anstatt phpMyAdmin zu verwenden Werkzeug dazwischen. Sie können Ihr Dumpfile einfach direkt über MySQLs source laden Befehl. Auf diese Weise sind Sie völlig unabhängig von den Beschränkungen von PHP.