我有两个具有相同列的数据库,我们想要移动并用数据库1到数据库2的所有值替换一些列
数据库A上的table1“user”>> table2“用户”在数据库B上
用户表有很多列,但我们想要替换一些列“col1”“col2”和“col3”
我该怎么做?
谢谢
编辑:我打算说,我只想替换前100列的id。我的意思是每个列都有超过100个id,我想先替换100个。不是全部
答案 0 :(得分:1)
如果table1
数据库上的db1
包含t1c1
,t1c2
,t1c3
列,您只需要t1c1
和{{1}将数据复制到数据库t1c3
的{{1}}中,其中列为table2
和db2
,然后
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();