CSV TO MYSQL Problem mit in Hochkomma eingeschlossenen Feldern

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

  • CSV TO MYSQL Problem mit in Hochkomma eingeschlossenen Feldern

    csv to mysql - werte eingeschlossen in ' ' werden in Sql Table in Hochkomma gesetzt !
    geschrieben von: goedicke (IP bekannt)
    Datum: 21.02.07 21:49


    Hilfe - habe csv to sql file von Bekannten erhalten,leider funkt es nicht wie ich es brauche und deshalb bitte ich als NON-PHP'ler um Hilfe:

    CSV file wird aus FOXPRO generiert, varCharFelder sind in einfachen Hochkommaten eingeschlossen, Num Felder sind nicht in Hochkomma eingeschlossen.
    CSV File Format kann nicht geändert werden, da ich den Source Code der Foxpro Anwendung nicht habe.

    Nun werden alle in Hochkomma eingeschlossen Felder mit Hochkomma in meine SQL-Datenbank übergeben der Inhalt sieht dann so aus:
    'BLECH' das stört ungemein bei der Ausgabe und auch bei Weiterverwendung in a nderen Scripts.

    Frage: Wo kann ich bei dem Script angeben wie die Werte eingeschlossen sind, Sepa ; ist korrekt angegeben, und sollte das mit explode (csv.... nicht funktionieren - wer kann mit beim Erstellen eines Scriptes helfen. Ich brüte schon ein paar Tage und komme nicht voran !

    Gudrun

    <?php


    // Database server host

    $sql_db['host'] = "localhost";
    // Database name
    $sql_db['name'] = "usrdb_www0377";

    // Database user name
    $sql_db['user'] = "www0377";

    // Database password
    $sql_db['pass'] = "l2vzal2";

    // Database table name
    $sql_db['tble'] = "maschine";


    // Absolute path or URL (e.g. http://...) to the CSV file
    $csv_file['path'] = "http://www.hmaba.de/bexport/maschine.csv";

    // Value Separator used in CSV file
    $csv_file['sepa'] = ";";


    // ======================================================================
    // Connect to MySQL database
    // ======================================================================

    $connect = @mysql_connect($sql_db['host'], $sql_db['user'], $sql_db['pass'])
    or die(mysql_error());

    $db = @mysql_select_db($sql_db['name'], $connect)
    or die(mysql_error());
    // ======================================================================
    // Create the SQL Insert Query
    // ======================================================================


    $file_contents_line = @file($csv_file['path'])
    or die ("CSV file not found.");

    foreach ($file_contents_line as $key => $val)
    {
    // Skip empty lines
    if (empty($val)) continue;

    $inserts .= (($key >= 1) ? ", " : "")."('";

    $values = explode($csv_file['sepa'], $val);

    for ($j = 0; $j < count($values); $j++)
    {
    $inserts .= addslashes(utf8_decode($values[$j])).(($j != (count($values) - 1)) ? "', '" : "");
    }

    $inserts .= "')";
    }


    // ======================================================================
    // Store all data into our database
    // ======================================================================


    $sql = "REPLACE ".$sql_db['tble']." VALUES ".$inserts;

    $res = mysql_query($sql)
    or die(mysql_error());


    echo "Convert successful.\n";

    ?>
    <a href="http://www.hmba.de">script by gudrungoedicke</a>

  • #2
    suchst du sowas wie
    load data local ... fields seperated by ...

    gruß
    peter
    Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
    Meine Seite

    Kommentar


    • #3
      Leider nicht - da unser Provider kein Load Befehl aus PHP Script erlaubt, access denied als Fehler Meldung -

      ich glaube ich sollte das script mit fgetcsv umschreiben, das ist mir zu Hoch da ich echt kaum Ahnung von PHP habe.

      Gruss Gudi

      Kommentar

      Lädt...
      X