2010-05-12 45 views
1

我试图想出同步2个不同数据库表的特定行的最佳方法。因此,例如有不同的数据库中这样2个产品表...如何检索作为INSERT语句的MYSQL记录

源数据库

product{ 
    merchant_id, 
    product_id, 
    ... additional fields 
} 

目标数据库

product{ 
    merchant_id 
    product_id 
    ... additional fields 
} 

因此,数据库架构上是相同的。然而,我正在寻找选择具有特定merchant_id的记录,从具有该merchant_id的目标表中删除所有记录,并用同一merchant_id的原始数据库中的记录替换这些记录。

我的第一个想法是使用mysqldump,解析出create table语句,并且只运行Insert语句。看起来像一个痛苦,但。所以我想知道是否有更好的技术来做到这一点。

我会认为mysql有一些创建INSERT语句作为SELECT语句的输出的方法,因此您可以定义如何将特定的记录信息插入到新的数据库中。

任何帮助将不胜感激,非常感谢你。

回答

1

phpMyAdmin具有此功能的一部分:您可以运行查询,然后将该查询的结果导出到包含CREATE语句的文件中。

更新:而且mysqldump有太:Link

mysqldump -u username -p --where="id='merchant_id'" databasename 

在问候代替商户的ID,这部分我不完全听懂了没有。你可能会更好地进行手动搜索+替换它们。你能举出两个这样的记录的真实例子吗?

+0

是的,我知道mysqldump具有该功能,我正在寻找一个更好的解决方案,其他明智的我必须通过解析文件来删除所有CREATE TABLE语句。我在考虑可能有一种方法只获得INSERT语句。 – Aglystas 2010-05-12 18:17:25

+1

@Aglystas为什么不使用'--no-create-info'去除CREATE TABLE? http://dev.mysql.com/doc/refman/5.1/en/mysqldump.html#option_mysqldump_no-create-info – 2010-05-12 18:20:40