我需要将某些记录从远程生产MySQL数据库中提取到本地开发MySQL数据库中。生产数据库的大小为GB,使用副本来复制/修复/测试产品中的错误是不切实际的。
生产数据库包含许多表,并以某种关系方式设置。有一个主键' customer_id'将与特定客户关联的每个表中的每条记录与该客户联系起来。两个数据库都有相同的名称,我们称之为" mydb"。我们感兴趣的数据是,#,myschema"。架构完全相同。
如何找到包含客户数据的所有表,在每个表中选择与特定客户相关的记录(customers_id),并将这些记录插入到本地数据库的相应表中。 / strong>不用担心覆盖现有的customer_id,让我们假设由于各种原因,情况永远不会出现。
到目前为止,我已经设法在连接到我的本地数据库的MySQL工作台中使用以下代码找到所有感兴趣的表:
SELECT DISTINCT TABLE_NAME FROM INFORMATION_SCHEMA.COLUMNS
where COLUMN_NAME IN ('customers_id') AND TABLE_SCHEMA = 'myschema';
有一次,我对此进行了扩展,以便查询并查找所有行,例如' customers_id' =' 123'但我失去了它,无法回到那条SQL语句。
我不是任何想象力的数据库专家,虽然根据过去的经验,我确信我可以使用perl和DBI或Python和MySQL连接器最终得到我想要的但理想情况下我想使用SQL语句完成所有这些操作。原因是有许多开发人员需要这种功能,他们都必须安装更新的perl和perl模块或安装MySQL连接器,因为默认的VM映像缺少这些位。
TL; DR:上面的粗体文字是我想回答的核心问题。