导出ID和列然后使用这些值来更新指定的行

时间:2013-12-19 22:58:30

标签: mysql database bash

我有一个运行mysqldump的脚本,用于从DB1导出多个表。它在DB2上运行生成的SQL脚本。其中一个表包含一个inventory列,在导入脚本后需要在DB2上保持一致。我不认为在转储/导入过程中有任何保留该特定价值的机会,但我会接受这些建议。

相反,我试图通过以下一般过程来解决这个问题。

  1. 从DB1
  2. 转储指定的表
  3. 按DB2上的ID备份清单
  4. 将步骤1中的转储导入DB2
  5. 在步骤2中从备份重置DB2上的清单。
  6. 我希望从bash执行这些任务。

    ssh <server where DB1 lives>
    mysqldump -u'' -p DB1 t1 t2 t3 > dump.sql
    scp dump.sql <server where DB2 lives>
    mysql ??? > inventory_backup.sql?
    mysql -u'' -p DB2 < dump.sql
    ??? inventory_backup.sql?
    

    我对替代流程建议非常开放,但架构变更几乎不在桌面上。我对此任务感到反感。我只是将库存分成它自己的表,可以从转储/导入中排除,但这需要在应用程序层中进行相当严重的重构工作,我们不能这样做现在可以承受。

1 个答案:

答案 0 :(得分:1)

我假设将第一个数据库复制到第二个数据库会清除第二个数据库。如果不是这样,那么这个过程可能会更简单一些。

如果你

怎么样?

1)复制包含库存的表格:

create table tcopy select * from table_with_inventory;

2)mysqldump tcopy

3)复制其他数据库

4)恢复tcopy

5)将值复制回来

update table_with_inventory
inner join tcopy on table_with_inventory.id=tcopy.id
set table_with_inventory.inventory=tcopy.inventory