Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在一个sqlite文件中绑定json文件的最佳方法_Json_Sqlite - Fatal编程技术网

在一个sqlite文件中绑定json文件的最佳方法

在一个sqlite文件中绑定json文件的最佳方法,json,sqlite,Json,Sqlite,对于大约80MB的JSON数据,将其插入一个数据库文件需要大约2-3个小时,再加上许多其他资源。在一个SQLite数据库文件中写入多个JSON文件的最佳方法是什么?我可以将SQLite头写入文件中吗?通过SQLite转换可读数据中的字符串并关闭它。可能存在数据损坏错误,如何解决它们以及如何避免它们?除了标准的插入行方法或多行插入外,还有其他解决此问题的快速方法吗 通过SQLite网站:有一些关于该文件的信息,这是一个好的起点吗 编辑: foreach ($aTempHandler as $i

对于大约80MB的JSON数据,将其插入一个数据库文件需要大约2-3个小时,再加上许多其他资源。在一个SQLite数据库文件中写入多个JSON文件的最佳方法是什么?我可以将SQLite头写入文件中吗?通过SQLite转换可读数据中的字符串并关闭它。可能存在数据损坏错误,如何解决它们以及如何避免它们?除了标准的插入行方法或多行插入外,还有其他解决此问题的快速方法吗

通过SQLite网站:有一些关于该文件的信息,这是一个好的起点吗

编辑:

  foreach ($aTempHandler as $i => $sBufferTemp)
  {

    #var_dump("\n______________ sBufferTemp");
    if (empty($sBufferTemp)) continue;
    $oTemp = json_decode($sBufferTemp);
    
    #var_dump("\n______________ oTemp");
    if (!is_object($oTemp)) continue;
    if(empty($oTemp->date)) continue;

    if (empty($this->check_table_exists($oTemp->date)))
    {
      if (empty($this->reate_table($oTemp->date)))
      {
        $this->configure();
      }
      print_r("Create table for: ". $oTemp->date ."\n");
    }

    if ($z == 2000) {
      print_r($oTemp->id ." -> ". count($aTempHandler) ."\n");
      $z = 0;
    }

    unset($oTemp->{'id'});
    $bInsert = $this->insert_row($oTemp->date, $oTemp);

    #continue;
    $z++;
    $x = 1;
    
  }



public function insert_row($sp_, $oTemp)
{
    $aTemp = (array) $oTemp;
    $aForInsert = array(
      'time' => $aTemp['time'],
      'note' => (isset($aTemp['note']) ? json_encode($aTemp['note']) : null), 
    );

    print_r('.');
    return $this->db->exec("INSERT INTO $sp_ (". implode(",", array_keys($aForInsert)) .") VALUES ('". implode("','", array_values($aForInsert)) ."');");
  }
上面的代码是迭代JSON文件中的行的部分。我出于其他原因替换了一些数据。创建表之后是insert_row函数,在该函数中生成并执行查询。这一部分花费的时间最长,因为每次我都需要分别构建查询并执行它,以便将数据放入相应的表中。即使进行另一个循环来构建更大的查询,也会产生同样的结果,或者对于我的双核i5处理器/16 Gb Ram/MacSSD来说,这将更加困难

参考资料

数据库文件格式。(注)。SQLite


JSON。(注)。JSON

80兆字节(MB)。我现在已经编辑了,谢谢。请展示一个JSON数据示例,以及您当前使用的速度太慢的技术,即MCVE@MarkSetchell是一个.JSON文件,其中包含许多编码为JSON字符串的PHP数组。脚本读取索引,如果.json文件存在,它将打开,并在foreach中逐行将数据插入sql数据库。完成后,它会移动文件,以便读取索引的脚本找不到它,并跳到下一个。请为您的内部循环显示一些具有代表性的代码。有很多地方你可能做错了或是“次优”。@MarkSetchell在这里,我已经编辑了这篇文章并添加了部分代码。