2017-02-07 3 views
0

Ich habe eine .TXT (CSV) -Datei, die ich durch PHP lesen und ordnen es in Arrays, so dass ich später insert oder update es in MySQL, The text Datei ist wie folgt:Wie analysiere ich eine Textdatei (CSV) in MySQL mit PHP

FIELD1;FIELD2;FIELD3;FIELD4 

CATEGORY 1(SOME VALUE in PARENTHESIS) 
Sub-Category 1 
VALUEof1;VALUEof2;VALUEof3;VALUEof4 
VALUEof1;VALUEof2;VALUEof3;VALUEof4 
VALUEof1;VALUEof2;VALUEof3;VALUEof4 

Sub-Category 2 
VALUEof1;VALUEof2;VALUEof3;VALUEof4 
VALUEof1;VALUEof2;VALUEof3;VALUEof4 
VALUEof1;VALUEof2;VALUEof3;VALUEof4 

CATEGORY 2(SOME VALUE in PARENTHESIS) 
Sub-Category 1 
VALUEof1;VALUEof2;VALUEof3;VALUEof4 
VALUEof1;VALUEof2;VALUEof3;VALUEof4 
VALUEof1;VALUEof2;VALUEof3;VALUEof4 

ich in der Lage gewesen, darüber hinaus, dass jede Zeile einzeln zu lesen habe ich völlig leer und nicht in der Lage, um herauszufinden, weg, was getan werden soll, wird eine Beratung oder Richtung

geschätzt werden
+0

'fegtcsv ($ csv_file)' liest diese –

Antwort

0

Sie können MYSQL-Abfrage wie folgt verwenden, um die CSV-Datei zu importieren. Beachten Sie, dass Sie die Spalten in der CSV-Datei mit denen in der Tabelle vergleichen müssen. Auch ich werde empfehlen, dass Sie das LOAD DATA INFILE verweisen.

https://dev.mysql.com/doc/refman/5.7/en/load-data.html

$query = <<<EOF 
     LOAD DATA LOCAL INFILE '$file' 
     INTO TABLE users 
     FIELDS TERMINATED BY ',' 
     LINES TERMINATED BY '\n' 
     IGNORE 1 LINES 
     (name,mobile,email) 
EOF; 
+0

das Objekt PHP-Skript zu verwenden, so dass die Datei automatisch jedes Mal analysiert wird –

0

Bitte verwenden Sie diese Funktion für die file.Now Parsen Sie die Daten in einem Array erhalten, so dass Sie leicht in die Datenbank einfügen.

function parse_data($file, $delimiter) { 
      // Set locale 
     $enc = mb_detect_encoding($file, 'UTF-8, ISO-8859-1', true); 
     if ($enc) 
      setlocale(LC_ALL, 'en_US.' . $enc); 
     @ini_set('auto_detect_line_endings', true); 

     $parsed_data = array(); 
     $raw_headers = array(); 

     // Put all CSV data into an associative array 
     if (($handle = fopen($file, "r")) !== FALSE) { 

      $header = fgetcsv($handle, 0, $delimiter); 
      if ($start_pos != 0) 
       fseek($handle, $start_pos); 

      while (($postdata = fgetcsv($handle, 0, $delimiter)) !== FALSE) { 
       $row = array(); 

       foreach ($header as $key => $heading) { 

        if ($heading == '') 
         continue; 

        // Add the heading to the parsed data 
        $row[$heading] = (isset($postdata[$key])) ? $postdata[$key]: ''; 

        // Raw Headers stores the actual column name in the CSV 
        $raw_headers[ $heading ] = $heading; 
       } 
       $parsed_data[] = $row; 

       unset($postdata, $row); 
      } 
      fclose($handle); 
     } 
     return array($parsed_data, $raw_headers); 
    } 
Verwandte Themen