mysql怎么批量录入数据


当前第2页 返回上一页

这个我目前正在使用,所以顺便把pdo的代码也复上来,以便大家参考

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

//设置pdo开启MYSQL_ATTR_LOCAL_INFILE

/*hs96.cn@gmail.com

public function pdo_local_info ()

{

  global $system_dbserver;

  $dbname = 'hs96.cn@gmail.com';

  $ip  = 'hs96.cn@gmail.com';

  $user = 'hs96.cn@gmail.com';

  $pwd  = 'hs96.cn@gmail.com';

  $dsn  = 'mysql:dbname=' . $dbname . ';host=' . $ip . ';port=3306';

  $options = [PDO::MYSQL_ATTR_LOCAL_INFILE => true];

  $db  = new PDO($dsn ,$user ,$pwd ,$options);

  return $db;

 }

//伪代码如下

public function test(){

  $arr_keys   = array_keys($arr);

  $root_dir   = $_SERVER["DOCUMENT_ROOT"] . '/';

  $my_file   = $root_dir . "hs96.cn@gmail.com/sql_cache/" . $order['OrderNo'] . '.sql';

  $fhandler   = fopen($my_file,'a+');

  if ($fhandler) {

  $sql = implode("\t" ,$arr);

   $i = 1;

   while ($i <= 80000)

   {

    $i++;

    fwrite($fhandler ,$sql . "\r\n");

   }

   $sql = "LOAD DATA local INFILE '" . $myFile . "' INTO TABLE ";

   $sql .= "tablename (" . implode(',' ,$arr_keys) . ")";

   $pdo = $this->pdo_local_info ();

   $res = $pdo->exec($sql);

   if (!$res) {

    //TODO 插入失败

   }

   @unlink($my_file);

  }

}

这个同样每一条数据量都很大,有很多varchar4000 和text字段

耗时 2.160s

以上满足基本需求,100万数据问题不大,要不数据实在太大也涉及分库分表了,或者使用队列插入了。

以上就是mysql怎么批量录入数据的详细内容,更多文章请关注木庄网络博客

返回前面的内容

相关阅读 >>

浅谈mysql原理与优化(一)之历史与体系结构

mysql myisamchk小工具使用手册

navicat for mysql是什么

连接mysql报1045错误怎么办

linux下忘记mysql数据库密码的解决方法

mysql 教程之列类型中的字符串型

mysql图形化工具包括哪些

mysql深入浅出负载均衡

mysql数据库不支持中文的解决办法

怎么给mysql添加值?

更多相关阅读请进入《mysql》频道 >>


数据库系统概念 第6版
书籍

数据库系统概念 第6版

机械工业出版社

本书主要讲述了数据模型、基于对象的数据库和XML、数据存储和查询、事务管理、体系结构等方面的内容。



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...