Mysql - 移动和替换列

时间:2014-02-24 08:40:12

标签: mysql

我有两个具有相同列的数据库,我们想要移动并用数据库1到数据库2的所有值替换一些列

数据库A上的table1“user”>> table2“用户”在数据库B上

用户表有很多列,但我们想要替换一些列“col1”“col2”和“col3”

我该怎么做?

谢谢

编辑:我打算说,我只想替换前100列的id。

我的意思是每个列都有超过100个id,我想先替换100个。不是全部

2 个答案:

答案 0 :(得分:1)

如果table1数据库上的db1包含t1c1t1c2t1c3列,您只需要t1c1和{{1}将数据复制到数据库t1c3的{​​{1}}中,其中列为table2db2,然后

t2c1

应该适合你。

确保您具有从跨数据库表或其他对象访问数据所需的权限。您还应该在t2c2上检查约束问题(如果有的话)。

答案 1 :(得分:1)

由于您无法将数据从数据库移动到具有单个连接的另一个数据,因此无法通过单个查询执行此操作,您需要手动执行此操作,或者使用第三方语言。

你需要:

  • 每个数据库获得一个连接
  • 在您的PRIMARY KEY
  • 上获得user
  • databaseA
  • 导出数据
  • 将这些数据注入databaseB

PHP / PDO示例:

// Create 2 connections
try {
  $dbA = new PDO('mysql:dbname=databaseA;host=localhost', 'root', '');
  $dbB = new PDO('mysql:dbname=databaseB;host=localhost', 'root', '');
} catch (PDOException $ex) {
  echo 'Connection failed: ' . $ex->getMessage();
}

// Get datas from databaseA
$result = $dbA->query("SELECT id, col1, col2, col3 FROM user");

// Prepare REPLACE query for databaseB
$query = "REPLACE INTO user (id, col1, col2, col3) VALUES";
$values = array();
foreach ($result as $row) {
    array_push($values, '('.$row['id'].', "'.$row['col1'].'", "'.$row['col2'].'", "'.$row['col3'].'")');
}
$query .= implode(',', $values);

// Execute REPLACE query on databaseB
$stmt = $dbB->prepare($query);
$stmt->execute();