在家园laravel中将csv文件导入mysql表文件

时间:2017-04-19 13:02:48

标签: php mysql laravel csv homestead

我正在使用宅基地流浪汉来存储数据库......现在我在我的家园中创建了作为品牌的表格

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

我从这个表中获得了大量数据。现在我想从.csv格式保存的excel中添加这个表的字段我是如何实现这一点的......

1 个答案:

答案 0 :(得分:0)

几年前我在网上找到了这个代码。它可能需要稍作修改,但概念就在那里。

在您的Database Seeder文件中,在run()方法中:

// 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); 

现在在下面的播种机中,确保标题名称与数据库中的表名匹配。

/**
 * 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;

}