首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用转储的mysqlimport

使用转储的mysqlimport
EN

Stack Overflow用户
提问于 2013-01-29 20:52:54
回答 3查看 2.6K关注 0票数 1

我需要恢复已转储的数据库,但不需要丢弃表中的现有行。

要丢弃,我使用:

代码语言:javascript
复制
mysqldump -u root --password --databases mydatabase > C:\mydatabase.sql

为了恢复,我不使用mysql命令,因为它将丢弃所有现有的行,但是mysqlimport显然可以做到这一点。但是怎么做呢?跑步:

代码语言:javascript
复制
mysqlimport -u root -p mydatabase c:\mydatabase.sql

“表mydatabase.mydatabase不存在”。它为什么要找桌子?如何在不丢弃现有表中的现有行的情况下,用整个数据库恢复转储?如果mysqlimport想要的话,我可以转储单张桌子。

该怎么办呢?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-01-29 20:56:03

如果您关注的是对现有行的践踏,则需要按以下方式将其转储:

代码语言:javascript
复制
MYSQLDUMP_OPTIONS="--no-create-info --skip-extended-insert"
mysqldump -uroot --ppassword ${MYSQLDUMP_OPTIONS} --databases mydatabase > C:\mydatabase.sql

这将完成以下工作:

  • 删除CREATE TABLE语句并仅使用插入。
  • 它一次只插入一行。这有助于减少重复键的行。

使用以这种方式执行的mysqldump,现在您可以像这样导入

代码语言:javascript
复制
mysql -uroot -p --force -Dtargetdb < c:\mydatabase.sql

试试看!!

警告:使用--skip-extended-insert转储将使mysqldump非常大,但至少可以逐一控制每个重复。这也将增加mysqldump重新加载的时间长度。

票数 2
EN

Stack Overflow用户

发布于 2013-01-29 20:56:41

我将在文本编辑器中编辑mydatabase.sql文件,删除引用删除表或删除行的行,然后正常使用mysql命令手动导入文件。

代码语言:javascript
复制
mysql -u username -p databasename < mydatabase.sql

mysqlimport命令用于使用mysql命令SELECT INTO OUTFILE创建的转储,而不是直接的数据库转储。

票数 1
EN

Stack Overflow用户

发布于 2013-01-29 20:59:30

这听起来比你描述的要复杂得多。

如果以您描述的方式进行备份,则数据库中有所有的记录。那么,您不想从数据库中删除现有的行并从备份中加载吗?为什么?备份文件(来自mysqldump的输出)具有drop和create命令的原因是为了确保您不会得到数据的两个副本。

正确的答案是使用mysql客户端加载mysqldump输出文件。如果你不想这样做,你必须解释为什么要得到一个更好的答案。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14592028

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档