mysql - 使用免费工具在命令行上比较两个 MySQL 数据库

标签 mysql sql diff

我想生成类似 diff 的 SQL 文件来比较两个 MySQL 数据库的 DATA 和 STRUCTURE。

这些生成的文件将作为 SQL 查询在命令行上执行。

在 SO 和各种论坛上有各种相关的旧线程,但它们处理带有用户界面的非免费工具(不是命令行工具)。

此外,不应直接同步数据库,而只能通过执行生成的 diff SQL 脚本来同步。

最佳答案

以下内容将向您展示差异(问题的第一部分),但输出实际上不能用作补丁文件。

比较两个表:

 mysql -u whatever -e "describe table" database1 > file1.txt
 mysql -u whatever -e "describe table" database2 > file2.txt
 diff file1.txt file2.txt

比较数据:

 mysql -u whatever -e "select * from table" database1 > file1.txt
 mysql -u whatever -e "select * from table" database2 > file2.txt
 diff file1.txt file2.txt

比较数据库:

 mysqldump --extended-insert=FALSE -u whatever database1 > file1.txt
 mysqldump --extended-insert=FALSE -u whatever database2 > file2.txt
 diff file1.txt file2.txt

关于mysql - 使用免费工具在命令行上比较两个 MySQL 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6679399/

相关文章:

mysql - 更改 SQL 表中的日期格式

git - 无法在已移动的文件上运行 git diff

MySQL 连接运动队的两个查询

mysql - 选择数组内爆中映射 id 的位置

sql - PostgreSQL:在一个语句中组合重复窗口函数(OVER/PARTITION BY)

android - 如何使用 DiffUtil 更新 RecyclerView 适配器

phpstorm - 比较单个文件的片段或两个不同文件的部分

jquery - 如何从表中删除元素但保留在数据库中

MySQL:为什么使用 VARCHAR(20) 而不是 VARCHAR(255)?

mysql - 将查询中的 NULL 值替换为另一行的值