首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用PHP高效地将数百万个数据集插入到MySQL数据库中?

如何使用PHP高效地将数百万个数据集插入到MySQL数据库中?
EN

Stack Overflow用户
提问于 2013-05-21 22:54:59
回答 3查看 1.4K关注 0票数 1

我运行一个PHP脚本,从文件中读取数据行,分析它们,并将它们逐个插入到本地MySQL数据库中:

代码语言:javascript
复制
$mysqli = new mysqli($db_host, $db_user, $db_password, $db_db);
if ($mysqli->connect_errno) {
  echo "Failed to connect to MySQL: (" . $mysqli->connect_errno . ") " . $mysqli->connect_error;
} else {
  /* As long as there is data in the file */
  while(...) {
    ... // analyse each row (contained in an object $data)
    /* Write it to the database table. */
    $mysqli->query($data->getInsertQuery($db_table));
  }
}

我有4000万行数据。最初的两百万个数据集被插入得非常快,但在过去的6个小时内只插入了两百万个(我现在有3000万个),而且似乎变得越来越慢(到目前为止,还没有定义索引!)。

我想知道,这是不是一种更有效的写入表的方法。如果可能的话,我会优先推荐一个没有额外(临时)文件的解决方案。

EN

回答 3

Stack Overflow用户

发布于 2013-05-21 22:59:50

首先将您的文件转换为SQL文件(因此,简单地更改您的脚本以将语句写到文件中),然后使用mysql命令行加载它会更有效:

代码语言:javascript
复制
mysql -uuser -p dbname < file.sql

对于如此大的导入,它将为您节省大量使用PHP的开销。只需记住将数据流式传输到文件中,一次一个查询;)

票数 2
EN

Stack Overflow用户

发布于 2013-05-21 22:59:39

可以预先生成SQL insert命令并将其存储到文件中,然后将数据导入MySQL。

代码语言:javascript
复制
mysql --default-character=utf8 --user=your_user -p your_db < tbl.sql
票数 1
EN

Stack Overflow用户

发布于 2013-05-21 23:19:22

您可以使用预准备语句来提高速度:

参见我在http://devzone.zend.com/239/ext-mysqli-part-i_overview-and-prepared-statements/上搜索到的"stackoverflow mysqli prepared“。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16673106

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档