mysql导出单独的createtable和alter
我目前正试图找到一种分离mysql导出函数的方法(使用phpmyadmin和/或shell) 以下情况: 我有两个数据库,在某些州是相同的,但随着时间的推移,只有一个得到了更新。例如: -database1的表“users”中有“UID”和“username”列 -database2的表“users”具有“UID”、“username”和“status”列 现在我想导出database2并将其导入database1。database2包含我不再需要的数据。但是数据库1包含重要的数据。因此,我需要一些东西,使我能够以某种方式“合并”这些数据库,而不会丢失database1上的数据,也不会合并database2中的数据mysql导出单独的createtable和alter,mysql,database,import,export,Mysql,Database,Import,Export,我目前正试图找到一种分离mysql导出函数的方法(使用phpmyadmin和/或shell) 以下情况: 我有两个数据库,在某些州是相同的,但随着时间的推移,只有一个得到了更新。例如: -database1的表“users”中有“UID”和“username”列 -database2的表“users”具有“UID”、“username”和“status”列 现在我想导出database2并将其导入database1。database2包含我不再需要的数据。但是数据库1包含重要的数据。因此,我需要
- 合并应该查看表是否存在,如果不存在->创建它
- 合并应该查看表中是否存在列,如果不存在,则->创建它
CREATE TABLE IF NOT EXISTS `users` (
`UID` int(11) NOT NULL,
`username` varchar(25) NOT NULL,
`status` int(2) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
当然,当我导入它时,不会发生任何特殊情况,因为表已经存在,所以不会创建“status”列。
在我的研究中,我发现可以使用shell命令导出与表创建分离的数据库(禁用数据库名称和user/pass):
但这给了我一个数据插入选项(我不需要)
有什么不同的可能性吗?
当然,我知道我可以手工编写它来将列修改到表中,但它必须是自动的,因为它不仅仅是我在示例中命名的表
为了100%清楚我想要实现的目标,一个伪手写sql脚本:
CREATE TABLE IF NOT EXISTS 'users';
For every column -> IF NOT EXISTS column in 'users' -> ALTER TABLE 'users' ADD column def;
您也可以使用MySQLWorkBench。看您可以使用一个模式比较工具:但随着时间的推移,只有一个得到了更新。“添加新表”和“将新字段添加到现有表”是唯一的操作吗?没有添加触发器、函数等,没有更改字段名、约束、索引等,没有其他更改?@Akina我只添加了表和列。没有列被重命名、删除或其他任何内容,因此请创建一个过程,该过程使用info from INFORMATION_架构和准备好的语句执行所需的升级。这并不难。
INSERT IGNORE INTO `users` VALUES (1,"bla",1);
CREATE TABLE IF NOT EXISTS 'users';
For every column -> IF NOT EXISTS column in 'users' -> ALTER TABLE 'users' ADD column def;