Ankündigung

Einklappen
Keine Ankündigung bisher.

csv import per php

Einklappen

Neue Werbung 2019

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

  • csv import per php

    hallo leute

    habe bei mir lokal eine access-db, in welche ich täglich daten einpflege. für meine website arbeitet im netz eine mysql datenbank. nun ist es jeweils etwas aufwendig, die daten aus access zu mysql zu transferieren.

    kann mir hier jemand eine gangbare möglichkeit nennen, wie ihr die daten am schnellsten aus access ins mysql importieren würdet?

    ich kopiere jeweils die access-tabellen ins excel, speichere da alles als CSV-File ab und dann kann ich das CSV-File in phpmyadmin importieren.

    da es aber 21 tabellen sind, ist es etwas aufwendig, immer 21 x exportieren und 21 x importieren

    gäbe es evtl eine code-variante, mit welcher ich alle 21 csv files mit einer php-datei uploaden kann (sobald die datei im browser aufgerufen wird, importiert php meine csv files in mysql?

    <?php
    mysql_select_db($database_edmoil, $edmoil);
    $query_edm_standings = "SELECT * FROM edm_standings";
    $edm_standings = mysql_query($query_edm_standings, $edmoil) or die(mysql_error());
    $row_edm_standings = mysql_fetch_assoc($edm_standings);
    $totalRows_edm_standings = mysql_num_rows($edm_standings);
    $sql = 'LOAD DATA LOCAL INFILE ''\csv\edm_standings.csv'' REPLACE INTO TABLE `edm_standings` FIELDS TERMINATED BY '';'' ENCLOSED BY ''"'' ESCAPED BY ''\\\\'' LINES TERMINATED BY ''\\r\\n''';
    ?>

    <body>
    Update erfolgreich!
    </body>
    </html>
    <?php
    mysql_free_result($edm_standings);
    ?>

    das hier hab ich mal versucht, um EIN csv-file zu importieren... will aber irgendwie nicht

    Parse error: parse error in D:\test\db_update.php on line 7

    sowas hab ich dann als meldung

    herzlichen dank für eure hilfe.


  • #2
    http://de3.php.net/manual/de/function.fgetcsv.php

    mfg

    Kommentar


    • #3
      hi leute... nochmals ich hab jetzt eine version, welche soweit funktioniert...

      NUR: ist euch das problem bekannt, dass beim import durch ein skript in der letzten spalte der mysql-tabelle jeweils noch ein leerschlag hinter den letzten buchstaben des wortes gesetzt wird?

      dies hat nämlich jetzt einen schwerwiegendes problem aufgedeckt: auf der website fragt die page ab, ob "SRC LIKE 'Ja' ist. wenn jetzt der wert in der DB nicht 'Ja' sondern 'Ja ' ist, so gibt er keine resultate zurück!!

      wie kann ich das korrigieren?

      hier der quellcode des skripts... wie gesagt, funktioniert alles bestens, bis dass der sack in der letzten spalte noch einen leerschlag einfügt...

      p.s.: wenn ich das csv in einem text-editor öffne, hats KEINEN leerschlag da hinten!! füge ich das file mit phpmyadmin ein, so klappt es ebenfalls OHNE diesen leerschlag... ist am skript was falsch oder warum generiert der pc diesen zusätzlichen leerschlag?

      <?php

      $db_MenuTitle[0] = "Name im Pulldown-Menü";
      $db_Hostname[0] = "hostname";
      $db_UserName[0] = "UserName";
      $db_Password[0] = "Password";
      $db_Database[0] = "Database";
      $db_Table[0] = "Table";
      $db_File[0] = "File";
      $db_Terminated[0] = ";";

      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]'";

      // MySQL-Statements ausf&uuml;hren
      if (mysql_query ($del) and 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 Import nach MySQL</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 Import nach MySQL</th>
      <th></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>



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

      </body>
      </html>

      Kommentar


      • #4
        SELECT * FROM [db_table] WHERE SRC REGEXP 'Ja' ORDER BY DATUM DESC, ID ASC

        das wär dann die Lösung trotzdem komisch, dass einfach noch ein leerzeichen reingehauen wird. wenn doch jemand weiss, warum das passiert, wärs natürlich super, das zu erfahren.

        Kommentar

        Lädt...
        X