mysqldump部分数据库

时间:2012-01-18 17:52:29

标签: mysql database mysqldump

我最近决定切换我的托管公司,所以要将我的旧数据库移动到我的新数据库中,我一直试图运行它:

mysqldump --host=ipaddress --user=username --password=password db_name table_name | mysql -u username -ppassword -h new_url new_db_name

这似乎工作得很好..但是因为我的数据库非常庞大,我会在桌子中间找到时间错误。所以我想知道是否有任何简单的方法可以在我的桌子的一部分上做mysqldump

我认为工作流程看起来像这样:

create temp_table
move rows from old_table where id>2,500,000 into temp_table
some how dump the temp table into the new db's table (which has the same name as old_table)

但我不确定如何做这些步骤。

2 个答案:

答案 0 :(得分:5)

--where="id>2500000"命令的末尾添加此mysqldump MySQL 5.1 Reference Manual

在您的情况下,mysqldump命令看起来像

mysqldump --host=ipaddress \
    --user=username \
    --password=password \
    db_name table_name \
    --where="id>2500000

如果你转储两次。第二个转储将包含表创建信息。但是下次要添加新行时。因此,对于第二个转储,在--no-create-info命令行中添加mysqldump选项。

答案 1 :(得分:2)

我为这项工作开发了一个工具。它叫做mysqlsuperdump,可以在这里找到:

https://github.com/hgfischer/mysqlsuperdump

使用它可以为每个表指定完整的“WHERE”子句,因此可以为每个表指定不同的规则。

您还可以使用转储中的每个表替换每列的值。例如,当您要导出数据库转储以在开发环境中使用时,这很有用。