2017-02-07 29 views
0

PHPで読み込み、配列に配置して、後でinsertまたはupdateをMySQLに追加したい.txt(csv)ファイルがあります。 textファイルは、このようなものです:私は完全に空白とどう処理するかを把握することはできません行っていることを超えて、別々にそれぞれの行を読むことができましたPHPを使用してMySQLにテキストファイル(CSV)をパースする方法

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 

、何かアドバイスや方向が

を理解されるであろう
+0

'fegtcsv($のcsv_fileは)'オブジェクトがファイルを自動的に毎回解析されるように、PHPスクリプトを使用することです。この –

答えて

0

以下のようにMYSQLクエリを使用して.csvファイルをインポートすることができます。 CSVファイルの列と表内の列を一致させる必要があることに注意してください。 また、LOAD DATA INFILEを参照することをお勧めします。

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

読みます –

0

あなたは、配列内のデータを取得するfile.Nowを解析するため、この機能を使用するので、あなたは簡単にデータベースに挿入することができますしてください。

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); 
    } 
関連する問題