【问题标题】:Huge Data Import, Wordpress php & mysql海量数据导入,Wordpress php & mysql
【发布时间】:2012-12-10 16:40:52
【问题描述】:

我在 2 个不同的服务器上有 2 个数据库。源数据库是一个海量的房地产数据库,第二个是一个 Wordpress 数据库。我必须将数据从源导入到 Wordpress 数据库的帖子和 postmeta 表。

目前,我正在从源数据库中提取所有内容,然后循环遍历这些结果以将它们插入到帖子表中,并使用另一个嵌套查询来使用帖子插入中的插入 ID 将每个字段作为元值插入。换句话说,它是一个内存猪。

我的问题是,我下面的循环是否可以改进,以便没有那么多单独的插入行?或者有没有人有任何建议让这个更快/不那么草率?

// SOURCE DB
$query = "select $fields from listings where data_id = 'B'"; 

$result = mysql_query($query);

// WORDPRESS DB
while ($row = mysql_fetch_assoc($result)) {
    $query2 = "insert into wp_posts (post_author, post_content, post_title, post_status, comment_status, ping_status, post_name, post_type) values";
    $query2 .= " ('1', '" . mysql_real_escape_string($row['remarks']) . "', '{$row['mls_acct']}', 'publish', 'closed', 'closed', '{$row['mls_acct']}', 'properties')";

    $result2 = mysql_query($query2);

    $id = mysql_insert_id();

    foreach ($row as $key => $val)
    {
        $query3 = "insert into wp_postmeta (post_id, meta_key, meta_value) values ";

        $query3 .= "('$id', '$key', 'mysql_real_escape_string($val)')";

        $result3 = mysql_query($query3);
    }
}

【问题讨论】:

  • 命令行 mysqldump(如果需要,可以搜索和替换表名)并重新导入到 wordpress db 是否可以解决问题?
  • 如果您有 PHPMyAdmin,您还可以导出所有表并将它们导入回您需要的任何数据库。

标签: php mysql wordpress


【解决方案1】:

我对此的第一个想法是分批插入记录,而不是一次插入一个。所以你的内部插入最终会是这样的:

insert into wp_postmeta (post_id, meta_key, meta_value) values
(1, meta_key_1, meta_value_1),
(1, meta_key_2, meta_value_2),
(1, meta_key_3, meta_value_3),
(1, meta_key_4, meta_value_4),
(1, meta_key_5, meta_value_5),
(1, meta_key_6, meta_value_6),
(1, meta_key_7, meta_value_7),
...
(1, meta_key_100, meta_value_100);

我不确定每批的最佳记录数是多少,但我想你明白了。

【讨论】:

    【解决方案2】:

    您可以将INSERT ... SELECT FROM ... 作为单个查询而不是您在内部执行的循环版本:

    INSERT INTO wp_postmeta (post_id, meta_key, meta_value)
        SELECT $id, meta_key, meta_value FROM wp_posts WHERE id = $id
    

    我对 WP 的内部结构不是特别熟悉(而且我真的不想变得如此......),但如果你可以调整它以使其正常工作,你将节省几十个单独的插入查询循环。

    【讨论】:

    • WP 的内部结构非常漂亮,一旦你掌握了它们 :)
    猜你喜欢
    • 2013-09-13
    • 1970-01-01
    • 2011-06-12
    • 1970-01-01
    • 1970-01-01
    • 2017-08-07
    • 2013-11-26
    • 2020-09-12
    • 2015-07-19
    相关资源
    最近更新 更多