命令行中的MySQL CREATE DATABASE IF NOT EXISTS参数

时间:2018-09-02 07:19:03

标签: java mysql

我正在尝试使用Java备份和还原MySQL数据库。我可以使用以下命令来备份数据库:

C:/Program Files/MySQL/MySQL Server 5.7/bin/mysqldump -u root --password=password myDbName -r "C:/backup.sql"

并使用以下Java代码执行它:

Runtime runtime = Runtime.getRuntime();
Process p = runtime.exec(commandString);

创建备份后,我想使用它还原数据库。我可以通过以下命令恢复备份文件:

C:/Program Files/MySQL/MySQL Server 5.7/bin/mysql -u root --password=password myDbRestore<"C:/backup.sql"

问题是,我想在执行还原之前检查数据库是否存在。 MySQL是否有参数执行CREATE DATABASE IF NOT EXISTS

换句话说,如何在一个语句中/在Java中执行以下命令:

C:/Program Files/MySQL/MySQL Server 5.7/bin/mysql -u root --password=password
create database if not exists myDbRestore;
use myDbRestore;
source C:\backup.sql;

1 个答案:

答案 0 :(得分:0)

实际上并没有直接的方法可以实现,但是您可以尝试:

  • 转储数据库时,将--no-create-db传递给mysql dump。这将省略create table语句。
  • 要还原,请先运行`mysql -uroot --password = password -e“如果不存在数据库,请创建myDbRestore”,然后再运行转储文件的源。

请注意,由于多种原因,这可能不是使用MySQL进行备份的最优雅方法:

  • 您已经在Java应用程序中获得了对mysql进行硬编码的凭据。如果您使用例如github存储您的代码,其他人可以看到它们。
  • 您正在硬编码MySQL安装的路径。该程序现在可以在您的计算机上运行,​​但是很可能不会:
    • 一旦您更新到更新的MySQL版本,该版本将不再安装到C:/Program Files/MySQL/MySQL Server 5.7/
    • 在其他人的计算机上
    • 在另一个操作系统上

对于上述几点,由于您的构建方式,我认为此备份仅在本地适合您?在那种情况下,写一个简单的.bat文件可能是一个很好的选择,因为它会更短,更直接吗?

最好, 马赛厄斯