SQL-Datei in MySQL schreiben

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • SQL-Datei in MySQL schreiben

    Hallo zusammen,

    ich bin schon seit Monaten auf der suche nach einer Funktion, mit der ich SQL-Dateien in einen MySQLi-Query einlesen und ausführen kann.
    Wenn ich die Dateien direkt aus phpmyadmin versuche einzulesen, dann geht immer nur
    a) ein Befehl (also eine Tabelle erstellen/Daten eintragen) pro Query, also wenn ich 5 Tabellen in einer Datei hab, macht er nur den ersten.
    b) und er fängt bei der letzten Zeile der Datei ("ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;") das spinnen an,
    c) ebenso bei folgenden Zeilen, welche ja auch immer eingeschrieben werden:

    Quellcode

    1. - phpMyAdmin SQL Dump
    2. -- version 3.4.5
    3. -- http://www.phpmyadmin.net
    4. --
    5. -- Host: localhost
    6. -- Erstellungszeit: 01. Mrz 2013 um 15:25
    7. -- Server Version: 5.5.16
    8. -- PHP-Version: 5.3.8
    9. SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
    10. SET time_zone = "+00:00";
    11. /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
    12. /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
    13. /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
    14. /*!40101 SET NAMES utf8 */;
    15. --
    16. -- Datenbank: `tunier_test`
    17. --
    18. -- --------------------------------------------------------
    19. --
    20. -- Tabellenstruktur für Tabelle `gruppen`
    21. --
    Alles anzeigen


    Kann mir jemand helfen, wie ich das machen kann, bzw. hat da jemand einen fertigen Code? Meins sah bisher immer so aus:

    Quellcode

    1. <?php
    2. $datei_open = fopen("sql.sql","r");
    3. $datei_inhalt = "";
    4. while ($inhalt = fgets($datei_open,4096))
    5. {
    6. $datei_inhalt .= $inhalt;
    7. }
    8. $do = $mysqli->query($datei_inhalt);
    9. ?>


    Vielen Dank schonmal

    Fipsi
  • Quellcode

    1. $import = file_get_contents("dateixyz.sql");
    2. $import = preg_replace ("%/\*(.*)\*/%Us", '', $import);
    3. $import = preg_replace ("%^--(.*)\n%mU", '', $import);
    4. $import = preg_replace ("%^$\n%mU", '', $import);
    5. mysql_real_escape_string($import);
    6. $import = explode (";", $import);
    7. foreach ($import as $imp){
    8. if ($imp != '' && $imp != ' '){
    9. mysql_query($imp);
    10. }
    11. }
    Alles anzeigen
  • Wird Zeit das die Registrierung funktioniert.

    Gute Frage.

    Was mir Spontan einfällt ist den Import nach xx Einträgen zu unterbrechen und die Seite dann nach xx Einträgen automatisch aufrufen zu lassen.
    Dabei wird der letzte Wert, das kann zb. eine ID sein, Eine Zeilennnummer etc. an die URL angehangen. Beim automatischen Aufruf von zb. sql.php?count=654 macht er mit dem Import bei Zeile 654 weiter.
    Dabei sollte man darauf achten das man den Import nicht mitten im SQL unterbricht. Da kann man vor dem nächsten Create oder Insert abbrechen.

    Bissher kenne ich das Prinzip nur aus dem Massenmailer eines Forums, sollte aber auch mit SQL umsetzbar sein.