合并MySQL中的表 - 总结列

时间:2010-06-15 22:47:43

标签: mysql mysqldump

我有一个有趣的问题,我肯定有一个简单的答案,但我似乎无法在文档中找到它。

我在不同的服务器上有两个独立的数据库表。它们都是具有相同主键的相同表模式。

我想在一台服务器上将表合并在一起。但是,如果Server1.Table1上的行存在于Server2.Table2中,那么总结我指定的列中的总数。

表1 {   column_pk,counter }; “test1”,3 “test2”,4

表2 {   column_pk,counter }; “test1”,5 “test2”,6

所以我合并后我想:

“测试1”,8 “TEST2”,10

基本上我需要做一个mysqldump但是它没有踢掉原始的INSERT语句,我需要做一个INSERT..ON DUPLICATE KEY UPDATE语句。

我有什么选择?

感谢任何输入,谢谢

3 个答案:

答案 0 :(得分:0)

INSERT INTO table_new (column_pk, counter) VALUES ('test',4)
  ON DUPLICATE KEY UPDATE c=c+4;

4test替换为您的实际数据。

至于如何实现包含这些查询的导出文件,我建议您使用正则表达式来修改标准导出。或者将它们插入同一个表格中,并按照Anax

的建议加以总结

答案 1 :(得分:0)

您可以使用查询将所需结果选择到新文件中:

SELECT column_pk, SUM(counter) FROM
(
  SELECT column_pk, counter FROM Server1.Table1 
  UNION ALL column_pk, counter FROM Server2.Table2
) data
GROUP BY column_pk
INTO OUTFILE "dump.txt" 

然后,您可以使用LOAD DATA INFILE

将此文件加载到目标服务器中

编辑:这里“Server1.Table1”是一个假名 - 你不能真正写出来。要从其他服务器上的表中读取它们就像是本地的,请使用federated storage engine

答案 2 :(得分:0)

我会把两个表扔进一个新表(new_pk,old_column_pk,old_counter)然后

SELECT DISTINCT old_column_pk AS column_pk, SUM(old_counter) AS counter
FROM newtable GROUP BY old_column_pk

作为我的最终数据