csvtosql, tab selektiert einlesen

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

  • csvtosql, tab selektiert einlesen

    Hallo, ich habe mal eine Frage.

    Erstmal der Code:

    PHP-Code:
    <?php
     $db_MenuTitle
    [0]  = "TEST";         // Bezeichnung des Eintrags - erscheint im Dropdown
              
    $db_Hostname[0]   = "localhost";         // Datenbank-Host (muss nicht zwingend immer localhost sein)
              
    $db_UserName[0]   = "root";                  // Benutzername f&uuml;r diese Datenbank
              
    $db_Password[0]   = "";                  // Zugehoeriges Passwort
              
    $db_Database[0]   = "usr_web3_1";                  // Datenbank, auf die zugegriffen werden soll
              
    $db_Table[0]      = "testtbl";                  // Table, in den die CSV-Datei &uuml;bertragen werden soll
              
    $db_File[0]       = "C:/apachefriends/xampp/htdocs/html/test/andere/Beispiel.txt";                  // Verzeichnispfad zur Textdatei (CSV etc.) auf dem Webserver
              //$db_Terminated[0] = (explode (Chr(9)));                 // Trennzeichen, das in der Textdatei verwendet wird
              //$db_Terminated[0] = "Chr(9)";                 // Trennzeichen, das in der Textdatei verwendet wird
              
    $db_Terminated[0] = "\t";                 // Trennzeichen, das in der Textdatei verwendet wird


    if (isset ($select_db)) {


                
    // Connect zur Datenbank
                
    mysql_connect($db_Hostname[$select_db], $db_UserName[$select_db], $db_Password[$select_db]) || die("Can't Connect to Database: ".mysql_error());
                
    mysql_select_db($db_Database[$select_db]);

                
    // Bisherige Daten aus der Datenbank l&ouml;schen
                
    $del "DELETE FROM ".$db_Table[$select_db];

                
    // CSV-Datei in die Datenbank &uuml;bertragen
                
    $sql "LOAD DATA INFILE '$db_File[$select_db]' REPLACE INTO TABLE ".$db_Table[$select_db]." FIELDS TERMINATED BY '$db_Terminated[$select_db]'";
               
    // ertse Zeile (Beschreibung) löschen
               //$del2 = "DELETE FROM" .$db_Table[$select_db] WHERE id=(SELECT min(id) FROM .$db_Table[$select_db];

                // MySQL-Statements ausf&uuml;hren
                
    if (mysql_query ($del) and mysql_query ($sql)) {
                
    //if (mysql_query ($del) and mysql_query ($sql)and mysql_query ($del2)) {
                    
    $message "&Uuml;bertragung erfolgreich";
                    }
                else {
                    
    $message "&Uuml;bertragung fehlgeschlagen. Grund: "mysql_error ();
                    }


                }




          
    // Generierung des DropDown-Menues

          
    function generate_dropdown () {

              global 
    $db_MenuTitle$db_Hostname$db_UserName$db_Password$db_Table$db_File$db_Terminated;


              if (
    is_array ($db_MenuTitle)) {

                  
    reset ($db_MenuTitle);

                  while (list (
    $key$val) = each ($db_MenuTitle)) {
                      echo 
    "<option value=\"".$key."\">".$val."</option>";
                      }

                  }

              }


    ?>



    <html>
      <head>
        <title>CSV to SQL</title>
      </head>
      <body bgcolor="#EAEAEA">
        <form action="<?php echo $PHP_SELF?>" method="POST">
          <table border="0" cellspacing="0" cellpadding="5" bgcolor="#C0C0C0" width="50%">
            <tr>
              <th>CSV to MySQL</th>
              <th>&nbsp;</th>
            </tr>
            <tr valign="bottom">
              <td>
                <select name="select_db" size="<?php echo count ($db_MenuTitle); ?>">
                  <?php generate_dropdown (); ?>
                </select>
              </td>
              <td>
                <input type="Submit" name="submit" value="Und los!">
              </td>
            </tr>
          </table>
        </form>

        <p><?php echo $message?></p>

        <table border="0" cellspacing="0" cellpadding="5" bgcolor="#C0C0C0" width="50%">
          <tr>
            <td>
              <p>
                Mit diesem Tool hat der Benutzer die Moeglichkeit, CSV-Dateien
                in eine bestehende MySQL-Datenbank zu uebertragen.
                In erster Linie wurde diese Anwendung entwickelt, um Dateien
                (CSV, Text), die in externen Programmen entstehen
                (Tabellenkalkulation, Warenwirtschaft, Produktdatenbanken)
                und die regelmaessig in eine MySQL-Datenbank auf dem Web-Server
                uebertragen werden muessen, einfach und auf Knopfdruck zu
                konvertieren.
              </p>

              <p>
                Beim Aufruf des Scripts wird ein Select-Menue erzeugt, das auf
                den folgenden Eintraegen basiert. Jeder Block stellt ein
                Eintrag im Menue dar.
                Sollen mehrere Eintraege definiert werden, muessen die folgenden
                Definitions-Bloecke 'entkommentiert' werden.
              </p>

              <p>
                Beim Ausf&uuml;hren des Scripts wird der Inhalt der CSV direkt in die
                Datenbank uebertragen.
              </p>

              <p>
                Wichtig: Um die Daten erfolgreich in die Datenbank uebertragen zu
                koennen, muss eine passende Tabelle bereits bestehen und die Datei
                muss sich auf dem Server befinden. Die alten
                Daten werden dabei komplett gel&ouml;scht und durch die neuen Daten
                ersetzt.
              </p>

              <p>
                Verschiedene Ausgangsdateien und Datenbanktabellen k&ouml;nnen Sie im
                Quellcode des Scripts editieren.
              </p>
            </td>
          </tr>
        </table>



        
      </body>
    </html>
    Was genau muß ich eingeben wenn ich Tab -selektierte txt Daten einlesen möchte?
    $db_Terminated[0] = "\t"; und $db_Terminated[0] = "Chr(9)";
    legt mir nur die letzte Zeile in mysql an.
    $db_Terminated[0] = (explode (Chr(9))); schmeisst alles durcheinander.

    Hat da jemand eine Lösung?
    Also ich würde gern eine normale Tab.- getrennte Datei einlesen ohne Sie vorher in externen Programmen zu bearbeiten.
    Mit den ";" selektierten funzt es alles super.
    Wollte auch eine Mail unter STADTAUS.com ( dem Macher des Scripts) senden... lach , kam ein MySQl Fehler.... lach


    Ich danke Euch total!
    Gruß Haxley

  • #2
    dafür brauchst du kein php. schau dir einfach an, wie du die query zusammenzusetzen hast (vor allem die angabe der trennzeichen) und schicke sie direkt an mysql ab: http://dev.mysql.com/doc/refman/5.0/en/load-data.html

    Kommentar

    Lädt...
    X