我有两个具有相同结构的MySQL数据库。但是,内容有所不同:DB1每天都接收最近10天的最新数据。 DB2包含有关过去几年的数据。
我要完成以下任务:
步骤1: 如果db1.t1的column1中存在column1,则从db2.t1中删除
步骤2: 将所有内容从db1.t1插入db2.t1
答案 0 :(得分:1)
步骤1:如果db1.t1的column1中存在column1,则从db2.t1中删除
步骤2:将所有内容从db1.t1插入db2.t1
您似乎正在尝试将db1.t1
中的数据合并到db2.t1
中。如果是这样,那么一种解决方案是使用mysql INSERT ... ON DUPLICATE KEY UPDATE
语句。这使您可以在执行INSERT
查询时处理重复项:在您的用例中,似乎可以更新源表中的每一列。
首先要解决这个问题,除非column1
是PRIMARY KEY
,否则您需要在目标表的UNIQUE
上设置column1
约束(在您的用例中,您最好也将其添加到源表中):
ALTER TABLE db2.t1 ADD CONSTRAINT t1_bk UNIQUE (column1);
然后:
INSERT INTO db2.t1 t_target
SELECT t_source.* FROM db1.t1 t_source
ON DUPLICATE KEY UPDATE
t_target.column2 = t_source.column2,
t_target.column3 = t_source.column3,
...
;