如果有多个表需要校验,且校验不同表名,怎么修改
时间: 2024-11-16 07:20:00 浏览: 8
如果需要检查多个表并且每个表的名称不同,你可以创建一个映射(map),将表名作为键,然后遍历这个映射,对每个表执行检查。以下是相应的修改:
```go
package main
// 假设你有一个包含所有表名映射的结构
var tablesToCheck = map[string]string{
"table1": "db1_table1",
"table2": "db2_table2",
// 添加更多表...
}
func main() {
db1User, db1Pass, db1Host, db1DB := "user1", "pass1", "localhost:3306", "db1"
db2User, db2Pass, db2Host, db2DB := "user2", "pass2", "localhost:3306", "db2"
db1Str := fmt.Sprintf("mysql://%s:%s@%s/%s?charset=utf8", db1User, db1Pass, db1Host, db1DB)
db2Str := fmt.Sprintf("mysql://%s:%s@%s/%s?charset=utf8", db2User, db2Pass, db2Host, db2DB)
db1, err := sql.Open("mysql", db1Str)
if err != nil {
log.Fatal(err)
}
defer db1.Close()
db2, err := sql.Open("mysql", db2Str)
if err != nil {
log.Fatal(err)
}
defer db2.Close()
for tableName, tableInDB1 := range tablesToCheck {
tableInDB2 := replaceTableName(tableInDB1, "db1", "db2") // 将db1替换成db2
err = checkTableCounts(db1, db2, tableName, tableInDB2)
if err != nil {
log.Printf("Error checking table '%s': %v", tableName, err)
}
}
}
// replaceTableName 函数用于动态替换数据库名
func replaceTableName(original, oldDB, newDB string) string {
return strings.Replace(original, oldDB, newDB, -1)
}
```
在这个版本中,`tablesToCheck`映射存储了每个表的原始名称和它们在对应数据库的名称。`checkTableCounts`函数现在接受两个表的名称而不是固定的“table1”和“table2”。
阅读全文