CSV Datei in MYSQL importieren

adil

Grünschnabel
Hallo alle,
ich habe eine Tabelle,die heisst auto und enthält kennzeichen, km_stand,fuell_menge als Attributen mit der kennzeichen als primary key.
ich bekomme jede Woche eine CSV-Datei, die kennzeichen, km_stand,fuell_menge von der Tabelle auto enthält und auch neue Datensätze(kennzeichen, km_stand,fuell_menge ) die in der Tabelle auto eingefügt werden soll.
weisst vielleicht jemanden, wie kann ich die neue CSV Datei in meiner Tabelle auto einfügen,ohne die alte Datensätze verloren gehen.
MfG
Adil
 
hallo,
ja hast du recht,möchte ich auch meine alte Datensätze behalten, vielleicht fehlt eine Datansatz in der neue CSV Datei, deswegen muss ich zuerst die datensätze vergleichen.
ich habe mit JOIN gearbeitet, aber ich weiss nicht wie ich das importieren soll.
ich habe so gemacht
PHP:
select * from auto UNION select * from csv
 
Hallo,

du musst die Datensätze nicht vergleichen. LOAD DATA INFILE ergänzt eine Tabelle lediglich um die Daten einer externen Datei. Es werden hierbei keine Datensätze gelöscht.

Grüße,
Matthias
 
vermutten wir, dass es eine kennzeichen von der Tabelle auto nicht in der neue CSV Datei gibt, wenn ich mache, was du sagst, dann wird eine Datensatz gelöscht.
B.S
tabelle auto CSV

kennzeichen kennzeichen
f-n 123 f-n 123
f-n 234 f-n 234
f-n 421 M-m 888
M-z 999
in diesem Fall wird die Dritte Datensatz gelöscht
Mfg
 
Hallo,

ich verstehe nicht ganz, was du meinst.

Angenommen in der Tabelle steht folgendes:
Code:
+-------------+
| kennzeichen |
+-------------+
|    AB-123   |
|    CD-456   |
|    EF-789   |
+-------------+
Weiterhin haben wir diese CSV-Datei:
Code:
AB-123;…
EF-789;…
GH-012;…
Dann werden mit LOAD DATA INFILE die Zeilen AB-123 und EF-789 entweder durch die Daten aus der CSV-Datei ersetzt (mit dem Schlüsselwort REPLACE) oder in Ruhe gelassen (Schlüsselwort IGNORE). Die Zeile GH-012 aus der Datei wird der Tabelle hinzugefügt. Mit CD-456 passiert überhaupt nichts, wird also auch nicht gelöscht.

Grüße,
Matthias
 
Also ich habe folgende Code.also mit IGNOR geht .

PHP:
<?php
          // Definition der Datenbanken und csv-Dateien

          $db_MenuTitle[0]  = "ADIL";         // 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]   = "filme";                  // Datenbank, auf die zugegriffen werden soll
          $db_Table[0]      = "x-man";                  // Table, in den die CSV-Datei &uuml;bertragen werden soll
          $db_File[0]       = "D:\htdocs";       // Verzeichnispfad zur Textdatei (CSV etc.) auf dem Webserver
          $db_Terminated[0] = ";";      // Trennzeichen, das in der Textdatei verwendet wird

            // Connect zur Datenbank
            
            include ("config.php");
            
      
			
           
             $del = "DELETE FROM ".$db_Table[0];

           
            $sql = "LOAD DATA INFILE "$db_File[0]" IGNOR INTO TABLE "$db_Database[0] "  FIELDS TERMINATED BY ';'";

            // MySQL-Statements ausf&uuml;hren
            if (mysql_query ($sql) && mysql_query ($sql)) {
                $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>
        <input type="file" size="20" name="file" /><br /><br />
      </table>
    </form>

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

  </body>
</html>
 
Zurück