gpt4 book ai didi

php - 测试2个mysql数据库之间的内容

转载 作者:行者123 更新时间:2023-11-28 20:56:56 26 4
gpt4 key购买 nike

我有 2 个数据库,DB1 中只有 1 个表,DB2 中有 2 个表。 DB1.table1 中的每条记录被拆分并分别存储在 DB1.table1 和 DB@.table2 中。

For example, DB1 has a table1 which looks like

Student_Name Id Address Attendance Marks
------------ -- ------- ---------- -----
John 1 90th st 70 90

The records that are transferred from DB1.table1 are stored in DB2.table and DB2.table2 in the following manner

DB2.table 1: Id Student_Name Address
-- ------------ -------
1 John 90th st


DB2.table 2: Id Attendance Marks
-- ---------- -----
1 70 90

我想编写一个测试用例来确保 DB1 中的所有数据都被复制到 DB2。我已经编写了一些查询来查明 DB1 中的记录是否未复制到 DB2。除了找出丢失的记录外,我还想逐列检查每条记录,以确保 DB1 和 DB2 中的值相同。

在上面的例子中,如果 DB2.table1 Student_name=DB1.table1 Student_name,DB2.table1 Address=DB1.table1 Address,我想检查 ID=1,等等。

如果我有 1000 列怎么办?我应该写一个长脚本来检查每一列吗?否。进行此类测试的最佳方法是什么?有没有我可以使用的工具或者我应该写下脚本?

最佳答案

这将在 db1.table1 中找到在 db2.table1db2 中没有匹配项的所有 Id 行.table2.

它假定列在两个表中的名称相同,并且任何存在 db2.table1db2.table2 的列都应该在db1.table1。因此,如果 db2.table2 有一个名为 Foo 的列,则 db1.table1 也必须有一个名为 Foo 的列。如果 db2.table1 有一个名为 Bar 的列,则 db1.table1 也必须有一个名为 Bar 的列。如果该列存在于 db2 但不存在于 db1 中,您将收到 MySQL 错误。

希望这就是您要找的!

header("Content-type: text/plain");

// connect with mysqli

// get a list of columns in db2.table1 and db2.table2
$columns = array();
$query = mysqli_query("SELECT table_name, column_name FROM information_schema.columns WHERE table_schema = 'db2' AND table_name IN ('table1', 'table2')");
while ($row = $mysqli_fetch_assoc($query)) {
$columns[$row["table_name"]][] = "db1.table1.{$row["column_name"]} = db2.{$row["table_name"]}.{$row["column_name"]}";
}

$query = mysqli_query("
SELECT db1.table1.Id
FROM
db1.table1
LEFT JOIN db2.table1
ON ". implode(" AND ", $columns["table1"]) ."
LEFT JOIN db2.table2
ON ". implode(" AND ", $columns["table2"]) ."
WHERE
db2.table1.Id IS NULL
OR db2.table2.Id IS NULL
");

while (list($id) = mysqli_fetch_row($query)) {
echo "ID {$id} does not match\n";
}

关于php - 测试2个mysql数据库之间的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12678732/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com