使用mysqldump选择性地转储数据

时间:2015-10-08 12:44:00

标签: mysql mysqldump

我正在尝试使用mysqldump导出我的数据库,并且sql文件应该满足以下条件

  1. 该文件不应包含table_x中的数据(保留结构)
  2. 删除/跳过该数据 来自table_y(保持结构)
  3. 的时间超过10天

    未来不同表格的条件可能会增加。

    此转储文件将在本地环境中使用,并将作为生产数据库的替代品。

    有没有办法在文件中写下所有这些条件?

1 个答案:

答案 0 :(得分:1)

mysqldump就是你想要的: http://dev.mysql.com/doc/refman/5.7/en/mysqldump.html

mysqldump --single-transaction --host=localhost --user=MyUser --password=MyPassword MyDatabase MyTable --where="mydatefield > 'insert-10 day old date here'"
mysqldump --single-transaction --host=localhost --user=MyUser --password=MyPassword --ignore-table=MyDatabase.MyTable --ignore-tableMyDatabase.MySecondIgnoredTable

可以通过更改“插入日期10天”来改善此答案。带有反引号bash命令的占位符,该命令是有条件的 - 10天。

在命令行上指定密码可能存在安全风险,因此不鼓励使用,尤其是在脚本或共享托管环境中。检查上面的帮助文件,以查看创建要在命令中使用的凭证文件的更复杂过程。

如果你有MyISAM表而不是InnoDB,你想要用--skip-add-locks切换--single-transaction

我意识到这个问题来自一年前,但有人可能仍然觉得有用。