我最近决定切换我的托管公司,所以要将我的旧数据库移动到我的新数据库中,我一直试图运行它:
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)
但我不确定如何做这些步骤。
答案 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”子句,因此可以为每个表指定不同的规则。
您还可以使用转储中的每个表替换每列的值。例如,当您要导出数据库转储以在开发环境中使用时,这很有用。