对于测试代码,我使用SQLYog的“复制到不同主机”选项将数据从实时数据库复制到测试数据库。大多数时候,这没关系。但对于某些表格,数据集绝对是巨大的,我只需要相对较小的数据子集进行测试。 “复制到不同主机”对话框为您提供了仅复制结构或结构和数据的选项。
如果我只想要部分数据,我必须运行select * on table where condition
查询,将结果导出为SQL查询,将该查询导入测试主机并运行它。虽然这有效,但它并不是一个有趣的过程,特别是考虑到即使是“小”测试数据子集仍然是很多行的情况。如果某些数据已被复制,那么会增加更多的复杂性,因为我必须编写一个查询来获取目标上的键列表,然后在主条件上添加where key not in (key list)
条件。
有没有办法让“复制到不同主机”功能只选择性地将行复制到目标数据库?
答案 0 :(得分:2)
目前无法在SQLyog复制工具中对各行使用WHERE条件。只要选择只有一个表进行复制就可以了,但是如果有更多的表,则没有意义。
你现在可以做的是在源上创建一个小的“虚拟”表并复制这个表。工作流程可能如下:
1)CREATE TABLE newtable
AS SELECT * FROM oldtable
WHERE ...
2)现在使用SQLyog GUI复制newtable
,然后根据需要将其放在源上
3)如果需要,在目标上重命名newtable
这会减少网络流量,只考虑您要传输的行。并且您将避免导出到文件,因为“减少”保留在源服务器内(不涉及文件系统或网络)。