Import Datenbank

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Import Datenbank

    Hallo

    also habe eine Textdatei mit ca. 45000 Zeilen, diese will ich Importieren hab dazu ein fertiges Script von einer PHP Seite umgeschrieben.
    Das Problem ist das er nach 25000-30000 Zeilen aufhört zu importieren hab es mehrmals probiert wenn ich jedoch die Datei in 2 Datein aufteile je 25000 Zeilen und sie einzeln importiere klappt es.
    So nun folgende Frage
    1. gibt es eine leichtere Methode die Datei zu importieren ?
    2. Woran liegt es das das Script abbricht ?
    3. Gibt es eine Möglichkeit das man die Datei mit den ca. 45000 Zeilen Importieren kann ohne diese Aufzuteilen.

    Mfg Bob

    PHP-Code:
    <?php 

    // Systemeinstellungen 

        
    $id "*****" 
        
    $pw "*****"
        
    $host "localhost"
        
    $database "*****"
        
    $table "*****"
        
    $datei "*****"
    // Einstellungen Ende 


    echo "<html><body>";  
    if(!
    $table || !$datei) die("Die Quelle oder das Ziel sind unbekannt"); 
    // Verbindung mit dem Server und einer Datenbank 

    $conn_id mysql_pconnect($host,$id,$pw) or die("Verbindung konnte nicht hergestellt werden"); 
    mysql_select_db($database) or die("Die Datenbank konnte nicht gefunden werden"); 
      
    // ermitteln Namen und Menge der Spalten 

    $result mysql_list_fields($database,$table); 
    for(
    $i=0;$i<mysql_num_fields($result);$i++) { 
    $spalten .= mysql_field_name($result,$i).","

    $anzahl mysql_num_fields($result); 
    $spalten trim(substr($spalten,0,-1)); 

    // leert die Tabelle 

    mysql_query("DELETE FROM $table") or die(mysql_error()); 
      
    // liest die Datei ab und überträgt sie zeilenweise in die Tabelle 

    $fp fopen($datei,"r"); unset($i); 
    while(!
    feof($fp)) { 
    $zeile fgets($fp,1024); 
      if(!
    $start) { if(count(explode(";",$zeile))!=$anzahl
      die (
    "Menge der Daten entspricht nicht der Anzahl der Spaltenanzahl"); } 
      echo 
    $i++."<br>"
      
    $zeile str_replace(";",",",$zeile); 
      
    mysql_query("INSERT INTO $table ($spalten) VALUES ($zeile)"); 
      
    $start=true

    fclose($fp); 
      
    echo 
    "Import erfolgreich abgeschlossen.<p></p>"
    echo 
    "</body></html>"

    ?>

  • #2
    Datei teilen

    Hallo

    also weiß zufällig jmd wie man eine Textdatei öffnet und sie in 2 neue Textdatein aufteilt da ich ein Importscript habe die Datei jedoch 45000 Zeilen hat und dieses zu groß ist. Da ich nie mit Datein gearbeitet habe sondern immer nur mit der Datenbank. Könnte mir nicht jmd ein Link geben wo soetwas näher beschrieben ist oder mir vielleicht das Script posten wäre super nett. Bitte ist sehr wichtig Danke

    Mfg Bob

    Kommentar


    • #3
      also,

      ich schreib mal fix was hin, hoffe das funktioniert

      Code:
      <?PHP
        $dateiname = "die_dicke_datei.txt"; // dein file
        $anzahl_zeilen_pro_neuer_datei = 11250; // wieviel zeilen hättst denn gern?
        $datei_nummer = 1;
        $handle = fopen ($dateiname, "r+");
        $nen_index = 0;
        while (!feof($handle)) {
          if ($nen_index++ % $anzahl_zeilen_pro_neuer_datei == 0) {
             if (!isset($handle2))
               fclose ($handle2);
            $handle2 = fopen ($dateiname."(Teil".$datei_nummer++.").txt", "w+");
          }
          fputs($handle2, fgets($handle, 1024));
        }
        fclose ($handle2);
        fclose ($handle);
      ?>
      schau mal, ob das so funktioniert, ich habs weder getested, noch sonstwas ... aber ein ansatz sollte es sein.

      achso, wie wärs mit copy&paste?
      Die Zeit hat ihre Kinder längst gefressen

      Kommentar


      • #4
        ey,

        crossposting suckt.

        schau mal in deinen anderen beitrag zu dem thema oder warte, bis sie zusammengeführt wurden ...
        Die Zeit hat ihre Kinder längst gefressen

        Kommentar


        • #5
          Allerhöchstwahrscheinlich ist die Ausführungszeit deines Scripts abgelaufen. Die kannst du in der php.ini ändern.

          Kommentar


          • #6
            Hallo

            [PHP]
            if (!isset($handle2))
            fclose ($handle2);
            PHP]

            in der 1. Zeile muß doch das ! weg die 1. Datei wird ordentlich gemacht nur bei der 2. fehlen 5000 Zeilen ... könntest du mir sagen wie man eine Datei ab einer bestimmten Zeile ausliest das würd mir vielleicht was nützen :-)

            Mfg Bob

            Kommentar


            • #7
              naja,

              nur bei der 2. fehlen 5000 Zeilen ... könntest du mir sagen wie man eine Datei ab einer bestimmten Zeile ausliest das würd mir vielleicht was nützen :-)
              die ersten 5000 ? oder die letzten?

              das teil erstellt beliebig viele dateien, jede datei (bis auf die letzte) enthält dann die vorgegebene zeilenanzahl ... wie man ab ner bestimmten zeile liest, steht ja auch schon in dem schnipsel .... lies die ersten x zeilen, und danach schreib jede zeile.
              ich geh davon aus, daß fgets zeilenweise liest, weiß garnicht, ob das stimmt.

              warum trennst du die datei nicht per hand, per copy&paste?
              Die Zeit hat ihre Kinder längst gefressen

              Kommentar


              • #8
                Hallo

                habe es anders hinbekommen per copy & paste ja weil die daten jmd per ftp jeden tag hochläd und es automatisch gemacht werden soll *g* trotzdem danke

                Mfg Bob

                Kommentar

                Lädt...
                X