1

在我的应用程序中,我需要将模式及其表和存储过程从基本模式复制到新模式。

我正在寻找一种方法来实现这一点。我研究了使用 cmd 来严格执行 mysqldump,但这不是一个好的解决方案,因为我有一个客户端应用程序,这需要在客户端安装服务器。另一种选择是我自己使用显示查询植入。这里的问题是我不需要从头开始实现它,必须有问题的部分是我需要根据那里的外键安排表的顺序(因为如果表中有外键,表 i我指的是需要先创建)。

我还想过创建一个存储过程来执行此操作,但我的 SQL 中的存储过程无法访问磁盘。

也许有人知道如何以另一种方式实现这一点?

4

2 回答 2

2

您可以尝试使用Apache ddlutils。有一种方法可以将 ddls 从数据库导出到 xml 文件并重新导入。

api 使用页面有关于如何将模式导出到 xml 文件、从 xml 文件读取并将其应用到新数据库的示例。我已经在下面复制了这些功能以及关于如何使用它来完成您所要求的小片段。您可以以此为起点并进一步优化它。

DataSource sourceDb;
DataSource targetDb;

writeDatabaseToXML(readDatabase(sourceDb), "database-dump.xml");
changeDatabase(targetDb,readDatabaseFromXML("database-dump.xml"));



public Database readDatabase(DataSource dataSource)
{
   Platform platform = PlatformFactory.createNewPlatformInstance(dataSource);
   return platform.readModelFromDatabase("model");
}

public void writeDatabaseToXML(Database db, String fileName)
{
    new DatabaseIO().write(db, fileName);
}

public Database readDatabaseFromXML(String fileName)
{
    return new DatabaseIO().read(fileName);
}

public void changeDatabase(DataSource dataSource,
                           Database   targetModel)
{
    Platform platform = PlatformFactory.createNewPlatformInstance(dataSource);
    platform.createTables(targetModel, true, false);
}
于 2012-08-09T07:27:26.780 回答
0

您可以使用它information_schema来获取外键信息并构建依赖关系树。这是一个例子

但是我认为您正在尝试解决以前已经解决过很多次的问题。我不熟悉 Java,但有一些 ORM 工具(至少对于 Python)可以检查您当前的数据库并在 Java(或 Python)中创建补充模型。然后您可以将该模型部署到另一个数据库中。

于 2012-08-09T06:48:13.007 回答