【问题标题】:Move values from one database to another in mysql and Codeigniter在 mysql 和 Codeigniter 中将值从一个数据库移动到另一个数据库
【发布时间】:2015-05-30 20:46:04
【问题描述】:

我有一个非常大的日志表,我想从中移动特定日期之间的行,将它们放入另一个数据库的相同表结构中。我不想复制所有内容,只复制特定的日期行,以便主数据库上的表保持较小。所以我必须选择我想要的数据并且只移动(和删除)它。

请记住,有很多数据,我不想用 mysqldump 全部复制。我想创建一个 php 文件或函数,我将添加一个 cron 作业,该作业将在几天后运行,并将所有特定数据从主数据库移动到其他数据库。

【问题讨论】:

  • 你能告诉我们一些你迄今为止尝试过的代码吗?
  • 这个问题没有具体的问题,也没有尝试

标签: php mysql codeigniter codeigniter-2


【解决方案1】:

使用这样的东西:

$sql = $db->query("SELECT * FROM old_table LIMIT 100");
while($row = $sql->fetch_assoc()){
    $values = "";
    foreach($row as $v)
        $values .= "'" .  $db->real_escape_string($v) . "', ";
    $values = rtrim($values, ", ");

    $db->query("INSERT INTO new_table (" . implode(",", array_keys($row) . ") VALUES ($values)");
    $db->query("DELETE FROM old_table WHERE `ID` = {$row->ID} LIMIT 1");
}

对于两个数据库,请改用这个:

$db = new MySQLi("hostname", "user", "password", "database");
$db2 = new MySQLi("hostname", "user", "password", "database");

$sql = $db->query("SELECT * FROM old_table LIMIT 100");
while($row = $sql->fetch_assoc()){
    $values = "";
    foreach($row as $v)
        $values .= "'" .  $db->real_escape_string($v) . "', ";
    $values = rtrim($values, ", ");

    $db2->query("INSERT INTO new_table (" . implode(",", array_keys($row) . ") VALUES ($values)");
    $db->query("DELETE FROM old_table WHERE `ID` = {$row->ID} LIMIT 1");
}

【讨论】:

  • 查询很好,但是在执行查询之前如何连接两个数据库,因为old_table在主数据库中,而new_table在另一个数据库中但结构相同。
  • 谢谢理查德,它更有效地解决了如何更新新表中以前的数据,因为我不想添加重复的数据,我想更新以前的数据并添加新的
  • 您可以通过 MySQLi 使用两个 MySQLi 对象进行查询。 $db 用于一个数据库,$db2 用于另一个数据库。如果我的回答解决了问题,您可以将其标记为解决方案(我的帖子左侧的复选标记)。
猜你喜欢
  • 2012-11-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-10
  • 2020-01-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多