【问题标题】:Import/Export database from external MySQL server从外部 MySQL 服务器导入/导出数据库
【发布时间】:2013-10-27 09:42:59
【问题描述】:

我正在通过以下方式务实地启动外部 MySQL 服务器

StartMysqlServer.p = Runtime.getRuntime().exec("server/bin/mysqld --defaults-file=server/my.ini --standalone --console --basedir=server/");

现在我想通过 java 代码导入/导出此启动 MySQL 中存在的数据库。我不知道这是否可能?提出任何答案。

【问题讨论】:

    标签: mysql sql jdbc


    【解决方案1】:

    您似乎正在使用 java Runtime 来执行与在命令行上相同的语句,因此可以以相同的方式完成导入和导出:

    导入

    Runtime.getRuntime().exec(
        "mysql -uusername -ppassword < /path/to/fileToImportFrom.sql");
    

    导出

    Runtime.getRuntime().exec(
        "mysqldump -uusername -ppassword > /path/to/fileToExportTo.sql");
    

    或者,您可以使用 MySQL JDBC 驱动程序连接到数据库并以编程方式插入数据。使用像 Spring 的 JdbcTemplate 这样的 API 可以减轻这种痛苦 (JdbcTemplate tutorial)。

    【讨论】:

    • 感谢您的回复,但是当我使用以下代码时,进程会无限运行。代码是Process runtimeProcess; runtimeProcess = Runtime.getRuntime().exec("mysqldump -uroot -p > D:/fileToExportTo.sql"); int processComplete = runtimeProcess.waitFor(); if (processComplete == 0) { System.out.println("备份创建成功"); } else { System.out.println("无法创建备份"); }
    • 因为您使用的是-p但没有提供密码,所以该过程正在等待您提供您的MySQL密码。尝试在终端中运行相同的命令,看看我的意思。
    • 根据建议,我修改了我的代码如下,它仍然运行无限时间 Runtime.getRuntime().exec("mysqldump -u root -p admin > D:/fileToExportTo.sql");
    • 谢谢trf。我解决了问题。这是我提到的博客链接omindu.wordpress.com/2011/06/27/…
    • 如果我使用了路径 D:/Copies/10-10-2013/server - Copy (2)/bin 中存在的 MySQL 服务器,我还有另一个查询> 那么我如何在此路径上运行转储命令意味着我希望在提到的路径服务器中存在导入/导出数据库。
    猜你喜欢
    • 2013-03-12
    • 1970-01-01
    • 2015-03-16
    • 1970-01-01
    • 1970-01-01
    • 2015-01-28
    • 2011-05-23
    • 2021-06-25
    • 1970-01-01
    相关资源
    最近更新 更多