如何避免在 mysqldump 备份上使用“use <database>”语句?

问题描述 投票:0回答:3

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

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

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

mysql backup
3个回答
25
投票

完全正确。删除

--databases
...

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

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


6
投票

正如 @wchiquito 在评论中所说,为了避免转储文件中出现“

USE databasename
”语句,您必须删除
--databases
选项。

如果您没有选择,可以随后使用 Unix sed 命令删除它:

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

托马斯


0
投票

与 tdaget 的答案类似,您可以导入数据库转储,例如从备份中导入

cat sourcefile.sql | sed '/^CREATE DATABASE/d' | sed '/^USE/d' | mysql newdbname

到新数据库。

这将删除

CREATE DATABASE
USE
线。

© www.soinside.com 2019 - 2024. All rights reserved.