0

我有两台服务器,它们包含相同的数据库、具有不同值的相同表结构。我需要比较 table1 的列(ID)的计数,如果 server1 的 db 的 table1 的 max(ID)>server2 的 table1 的 max(ID)>max(ID) 然后将所有新记录从 server1 插入到 server2

我需要将此逻辑保存在 shell 脚本中,以便当我调用 .sh 文件时,它会为我完成这项工作。我想从可以访问这些服务器的本地计算机上执行此操作。

比较如何在 shell 脚本中发生。我正在使用 Mysql 数据库

4

1 回答 1

0

从我从您的陈述中得到的是,您想继续检查是否有任何表的记录多于另一个。并复制具有更多条目的表。我的建议是,既然您想使用脚本文件来自动执行任务,我会给您两种方法:

(i) 您可以为每个表创建一个 mysql-dump-file 并通过比较大小来检查哪个表中有更多字符,而不是比较列 ID。显然,人口越多,人口越多。所以,用大表的转储覆盖小表。

 mysqldump -u <username> -p<password> -h <address> <schema> <table>  > <output-file>.sql

(ii) 首先将两个表的 COUNT(*) 输出存储在两个变量中并进行比较。

  $tableCount1=$(`echo mysql -u <username> -p<password> -h <address> < <input-file>.sql` | cut -d' ' -f2)

您的输入文件将包含以下内容:

  USE <schema>
  SELECT COUNT(*) FROM <table>;

比较id,然后用大表的dump替换小表!

如果您不想替换整个表,请使用:

 mysqldump -u <username> -p<password> -h <address> <schema> <table> --skip-triggers --compact --no-create-info --where=<column_id> > <id> > <output-file>.sql
于 2012-11-26T21:44:56.580 回答