php - 如何将多维数组中的大量内容存储到mysql数据库中?

标签 php mysql loops multidimensional-array foreach

这是我的数组:

array(4) {
  [0]=>
  array(500000) {
    ["1234"]=>
    array(3) {
      ["fileName"]=>
      string(10) "monkey.jpg"
      ["path"]=>
      string(20) "animales/monkey.jpg"
      ["dateTime"]=>
       string(19) "2016-10-12 19:46:25"
    }
    ["3456"]=>
    array(3) {
      ["fileName"]=>
      string(9) "horse.jpg"
      ["path"]=>
      string(19) "animales/horse.jpg"
      ["dateTime"]=>
       string(19) "2016-10-12 19:46:25"
    }
    .... and many more...
  }
 ... and many more...
}

我想将内容存储到我的数据库中:

$sql = "INSERT INTO files (id,fileName,path,dateTime) values(?,?,?,?) ";

foreach($array as $key => $value){
    if(is_array($value)){
        foreach($value as $key => $v){
            foreach($v as $k => $item){
                if(is_array($v)){
                    $s = str_replace("\\","",$v['dateTime']);
                    $d = strtotime($s);
                    $dateTime = date('Y.m.d H:i:s', $d);  
                    $q->execute(array($key,$v['fileName'],$v['path'],$dateTime));
                }
            }
        }
    }
}

我的问题是,我有超过 500.000 个条目。所以我的系统崩溃了。我认为这是因为循环内部有太多循环。有没有一种方法可以仅用一个循环或其他方式更快地读取内容?

注意:$array是一个像这样创建的拼接数组 ($array[] = array_splice($orinal_array, 0,count($orinal_array)); 我实际上这样做是为了使系统更快

最佳答案

请看一下这个答案:

MYSQL import data from csv using LOAD DATA INFILE

您应该将数据转换为 csv 并依赖 LOAD DATA INFILE

并不是说您应该将 csv 文件上传到您的 mysql 服务器以依赖此 Mysql 功能

关于php - 如何将多维数组中的大量内容存储到mysql数据库中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50444711/

相关文章:

c# - 在游戏循环中使用结构体与引用变量

java - 奇数/偶数程序不打印任何内容

mysql - PDO 应该在函数中使用吗?

python - 当数据库只能通过jumphost访问时如何通过Python连接MySQL

mysql - 如何模拟MongoDB查询条件中的子查询

windows - 批处理脚本循环

php - 外部 css 文件未在 Codeigniter View 中加载

Php 设置时区

PHP/jQuery/AJAX 表单更新最佳实践

php - 从本地主机调用 Instagram API