2017-04-19 22 views
0

私は今、私はこのテーブルあちこちに巨大なデータを持っていたブランドインポートcsvファイル

mysql> desc brands; 
+-------+--------------+------+-----+---------+----------------+ 
| Field | Type   | Null | Key | Default | Extra   | 
+-------+--------------+------+-----+---------+----------------+ 
| id | int(11)  | NO | PRI | NULL | auto_increment | 
| name | varchar(255) | YES |  | NULL |    | 
+-------+--------------+------+-----+---------+----------------+ 

としての私の屋敷内のテーブルを作成した...データベースを格納するために屋敷の放浪を使用しています.Now私はこのテーブルのフィールドを.csv形式で保存されたexcelから追加したいと思います。

+0

は、ALTER TABLE文を使用します。 CSVファイルからデータをロードするには、LOAD DATA INFILEコマンド - [LOAD DATA INFILE Syntax](https://dev.mysql.com/doc/refman/5.7/en/load-data.html)を使用します。 – Devart

答えて

0

私はこのコードを何年か前にオンラインで見つけました。わずかな変更が必要かもしれませんが、そのコンセプトはそこにあります。以下シーダで今

// path to csv file 
$csvFilename = app_path().'/../database/seeds/csv/filename.csv'; 

// run the seeder and get the variable to store the CSV data array 
$seedData = $this->seedFromCSV($csvFilename, ','); 

// Insert into your table 
DB::table($csvTable)->insert($seedData); 

、あなたのヘッダ名は、データベース内のテーブル名と一致することを確認:run()メソッドでデータベースのシーダーファイルで

、。 [ALTER TABLE構文](https://dev.mysql.com/doc/refman/5.7/en/alter-table.html) - 新しいフィールドを追加するには

/** 
* Collect data from a given CSV file and return as array 
* 
* @param $filename 
* @param string $deliminator 
* @return array|bool 
*/ 
private function seedFromCSV($filename, $deliminator = ',') 
{ 

    $header = NULL; 
    $data = array(); 

    if(($handle = fopen($filename, 'r')) !== FALSE) 
    { 
     while(($row = fgetcsv($handle, 1000, $deliminator)) !== FALSE) 
     { 
      if(!$header) { 
       $header = $row; 
      } else { 
       $data[] = array_combine($header, $row); 
      } 

     } 

     fclose($handle); 
    } 

    return $data; 

}