Thinkphp6百万级xlsx表格导入数据库的实现方案

直接上代码:

 

前端:




    
    excel导入数据
    


请上传文件:

后端:

    public function laod_excel(){
        if(request()->isPost()){
            // 获取表单上传文件 例如上传了001.jpg

            $file = request()->file('file');
            // 上传到本地服务器
            $savename = \think\facade\Filesystem::disk('public')->putFile( 'topic', $file);
//            echo $savename;die;
//            $file_path = 'http://'.$_SERVER['SERVER_NAME'].'/storage/'.$savename;
            $file_path = 'http://'.$_SERVER['SERVER_NAME'].\think\facade\Filesystem::getDiskConfig('public', 'url') . '/' . str_replace('\\', '/', $savename);
            $sql = "LOAD DATA LOCAL INFILE '".$file_path."'
INTO TABLE metadata
FIELDS TERMINATED BY ','";

            Db::execute($sql);
        }
        return view('load_excel');
    }

表结构:

CREATE TABLE `metadata` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键id',
  `user_id` varchar(36) NOT NULL COMMENT '用户id',
  `user_name` varchar(30) NOT NULL COMMENT '用户名称',
  `phone` varchar(20) NOT NULL COMMENT '手机号码',
  `lan_id` int(9) NOT NULL COMMENT '本地网',
  `region_id` int(9) NOT NULL COMMENT '区域',
  `create_time` datetime NOT NULL COMMENT '创建时间',
  PRIMARY KEY (`id`),
  KEY `idx_user_id` (`user_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

database.php配置文件加参数:

PDO::MYSQL_ATTR_LOCAL_INFILE => true //开启local_infile

Thinkphp6百万级xlsx表格导入数据库的实现方案_第1张图片

 不然的话会出现这个问题:

LOAD DATA LOCAL INFILE forbidden

结果:

Thinkphp6百万级xlsx表格导入数据库的实现方案_第2张图片

 

参考博客:

百万级xlsx表格导入数据库的实现方案

thinkphp6 上传文件 - thinkphp6 - php中文网博客

thinkphp5 导入100w 数据 到mysql_weixin_30747253的博客-CSDN博客

附一个百万数据csv文件

百万数据csv文件,用来做程序测试-PHP文档类资源-CSDN下载

你可能感兴趣的:(thinkphp,PHP,数据库,java,servlet,php,大数据)