我需要恢复已转储的数据库,但不需要丢弃表中的现有行。
要丢弃,我使用:
mysqldump -u root --password --databases mydatabase > C:\mydatabase.sql为了恢复,我不使用mysql命令,因为它将丢弃所有现有的行,但是mysqlimport显然可以做到这一点。但是怎么做呢?跑步:
mysqlimport -u root -p mydatabase c:\mydatabase.sql“表mydatabase.mydatabase不存在”。它为什么要找桌子?如何在不丢弃现有表中的现有行的情况下,用整个数据库恢复转储?如果mysqlimport想要的话,我可以转储单张桌子。
该怎么办呢?
发布于 2013-01-29 20:56:03
如果您关注的是对现有行的践踏,则需要按以下方式将其转储:
MYSQLDUMP_OPTIONS="--no-create-info --skip-extended-insert"
mysqldump -uroot --ppassword ${MYSQLDUMP_OPTIONS} --databases mydatabase > C:\mydatabase.sql这将完成以下工作:
CREATE TABLE语句并仅使用插入。使用以这种方式执行的mysqldump,现在您可以像这样导入
mysql -uroot -p --force -Dtargetdb < c:\mydatabase.sql试试看!!
警告:使用--skip-extended-insert转储将使mysqldump非常大,但至少可以逐一控制每个重复。这也将增加mysqldump重新加载的时间长度。
发布于 2013-01-29 20:56:41
我将在文本编辑器中编辑mydatabase.sql文件,删除引用删除表或删除行的行,然后正常使用mysql命令手动导入文件。
mysql -u username -p databasename < mydatabase.sqlmysqlimport命令用于使用mysql命令SELECT INTO OUTFILE创建的转储,而不是直接的数据库转储。
发布于 2013-01-29 20:59:30
这听起来比你描述的要复杂得多。
如果以您描述的方式进行备份,则数据库中有所有的记录。那么,您不想从数据库中删除现有的行并从备份中加载吗?为什么?备份文件(来自mysqldump的输出)具有drop和create命令的原因是为了确保您不会得到数据的两个副本。
正确的答案是使用mysql客户端加载mysqldump输出文件。如果你不想这样做,你必须解释为什么要得到一个更好的答案。
https://stackoverflow.com/questions/14592028
复制相似问题