Rol: große DB auf Server hochladen->timeout Problem

Hi,

ich muß eine MySQL Tabelle mit ca. 1.200.000 Datensätzen von meinem PC auf einen Strato Server hochladen.
Dazu habe ich die Tabelle mit mysqldump als SQL-Statements ausgegeben, die Datei auf den Server hochgeladen und ein Perlscript geschrieben, welches die Daten Zeile für Zeile wieder in die MySQL-Tabelle schreibt.
Wenn ich das Script nun von einem Browser aus starte, kommt nach dem einlesen von ca. 4000 Tabellenzeilen ein timeout (hätte ich mir auch denken können .-( ).
Hat jemand 'ne Idee, wie ich eine derart große MySQL Tabelle sonst noch auf einen (Strato-) Server hochladen kann?

Gruß

Rol

P.S. An das zerstückeln der Datei habe ich natürlich auch schon genacht, wäre aber auch ein langwieriges Unterfangen.

  1. Hi,

    Wenn es eine  Datei ist, dann geh doch mal auf "www.2ftp.de"

    Da kannst du dich einloggen, und es wird alles automatisch beim hocladen zerstückelt und wieder zusammengesetzt.

    Cu Proyxie

    1. Hi Proyxie,

      Wenn es eine  Datei ist...
      Da kannst du dich einloggen, und es wird alles automatisch beim Hochladen zerstückelt und wieder zusammengesetzt.

      Das nütz mir leider nichts. Das Problem ist nicht das Hochladen der Datei sondern das einlesen derselben in die MySQL-DB.
      Das schaffe ich mit einem per Browser gestarteten Script nicht annähernd innerhalb des timeout.

      Trotzdem Danke.

      Rol

  2. Hallo,

    Wenn ich das Script nun von einem Browser aus starte, kommt nach dem einlesen von ca. 4000 Tabellenzeilen ein timeout (hätte ich mir auch denken können .-( ).

    Normalerweise solltest Du solche Sachen nicht über den Webserver, sondern über eine Shell (telnet) erledigen. Wenn allerdings Dein Provider einen derartigen Zugang nihct erlaubt, so kannst DU auch versuchen, im Script regelmäßig (vielleicht alle 1000 Records) etwas an den Browser zu senden, damit der Webserver 'weiß' daß da noch etwas kommt.

    Das mit dem Zerlegen halte ich übrigens auch nicht für die schlechteste Idee, da Du damit zumindest erreichst, daß die Servermaschine nicht komplett ausgebremst wird. Und mache solche sachen nicht in der 'Hauptverkehrszeit', Dein Provider wirds Dir danken.

    Grüße
      Klaus

  3. Huhu Rol

    für ein ähnliches Problem habe ich das ungefähr wie folgt gelöst

    mit Hilfe von Javascript lädt sich das Skript nach einer bestimmten Zeitspanne (z.B. 30 Sec) selbst immer wieder neu.
    (Ausgabe des Javascript codes in Browser mit flush(); erzwingen)
    Es wird dann ein Parameter mit übergeben z.B. die zuletzt erfolgreich bearbeitete ID.

    In etwa so

    $THISSTART=time();

    [...]

    if((time()-$THISSTART )> 30){
                          $reload=$PHP_SELF.'?'.$QUERY_STRING.'&STARTID='.($n+1);
    echo "<script>self.location='$reload'</script>reload...<br>";
    flush(); # force output

    }

    Um den Server zu entlasten könntest Du ja noch eine Verzögerung im Javascript mit einbauen.

    Viele Grüße

    lulu