【问题标题】:How to avoid "use <database>" statement on mysqldump backups?如何避免在 mysqldump 备份上使用“use <database>”语句?
【发布时间】:2015-08-30 09:36:05
【问题描述】:

我正在使用这个命令语法:

mysqldump -u<username> -p<password> --no-create-db --databases mydatabase > /var/backups_DB/MyDatabase-$(date +"%d-%m-%Y-%H:%M:%S").sql

但我找不到如何防止在生成的文件中插入“use mydatabase”行。 我应该使用哪个选项?

【问题讨论】:

  • 你到底想要什么?你要出口吗?如果是,试试这个:$ mysqldump -u [uname] -p[pass] db_name &gt; db_backup.sql
  • @Sajad,我使用的命令是正确创建备份文件。但是USE 'mydatabase'; 也被插入了,我想避免它。我设法使用--no-create-db 选项删除了CREATE DATABASE 语句,但无法取出其他语句。
  • 这是多大的问题
  • @AsConfused,如果我想将备份恢复到另一个数据库,我总是需要打开文件并删除或手动修改将要使用的数据库之前使用它,而不是简单地直接在命令行上调用我希望恢复备份的数据库。
  • 删除--databases 选项。

标签: mysql backup


【解决方案1】:

正如@wchiquito 在 cmets 中所说,为了避免在转储文件中出现“USE databasename”语句,您必须删除 --databases 选项。

如果您别无选择,您可以在之后使用Unix sed 命令将其删除:

cat sourcefile.sql | sed '/USE `databasename`;/d' > destfile.sql

托马斯

【讨论】:

    【解决方案2】:

    没错。删除--databases...

    https://www.computerhope.com/unix/mysqldum.htm

    --数据库
    -B
    转储几个数据库。通常,mysqldump 将命令行上的第一个名称参数视为数据库名称,将后面的名称视为表名称。使用此选项,它将所有名称参数视为数据库名称。 CREATE DATABASE 和 USE 语句包含在每个新数据库之前的输出中。

    【讨论】:

    • 这似乎仍然是唯一的解决方案,因为有一个可用的--no-create-db 标志,但如果使用--databases 标志转储它,则始终包含use &lt;database&gt;。我想这是有道理的,因为它适用于多数据库环境,但如果支持新标志 --no-use-db 或其他东西会很好...forums.asp.net/t/…
    猜你喜欢
    • 2019-09-26
    • 1970-01-01
    • 1970-01-01
    • 2020-02-14
    • 1970-01-01
    • 1970-01-01
    • 2021-01-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多