thinkphp5快速导入50万csv数据到mysql数据库

1、使用SpreadsheetReader把数据写到txt,再用load data local 导入mysql

2、使用mysql load data local

$sql = "load data local infile '$txt_path' ignore into table 表名 character set gbk fields terminated by '_' lines terminated by '|'(`name`,`code`,`size`,`xingbie`,`type`,`names`,`lingshoujia`,`price`,`zaikushu`,`datetime`,`type_show`,`bili`);";

Db::execute($sql);

配置文件 

'break_reconnect' => true,//断线重连

'params' => [PDO::ATTR_CASE => PDO::CASE_LOWER, PDO::ATTR_EMULATE_PREPARES => true, PDO::MYSQL_ATTR_LOCAL_INFILE => true ],

3、mysql开启local_infile,修改配置文件

添加或修改 local_infile=1

4、示例

        $filePath = "D:/ng/wl/public/uploads/20230103/222.csv";
        $dbc = [
            // 这里是数据库信息
            'type'            => Env::get('database.type', 'mysql'),
            // 服务器地址
            'hostname'        => Env::get('database.hostname', '127.0.0.1'),
            // 数据库名
            'database'        => Env::get('database.database', 'wl1'),
            // 用户名
            'username'        => Env::get('database.username', 'root'),
            // 密码
            'password'        => Env::get('database.password', 'root'),
            // 端口
            'hostport'        => Env::get('database.hostport', '3306'),
            //断线重连
            'break_reconnect' => true,
            // 数据库连接参数  可能需要这些参数 这里是在 TP 框架中需要设置的参数
            'params' => [PDO::ATTR_CASE => PDO::CASE_LOWER,PDO::ATTR_EMULATE_PREPARES => true,PDO::MYSQL_ATTR_LOCAL_INFILE => true],
];
        $rs = Db::connect($dbc)->execute("LOAD DATA LOCAL INFILE '{$filePath}' INTO TABLE fa_express_kuaidiniao CHARACTER SET gbk fields terminated by ',' IGNORE 1 LINES");

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值