如何在MySQL中使用Java复制模式(how to copy a schema in mysql

2019-06-26 21:43发布

在我的应用程序需要使用其表和存储过程的模式从基础schemn复制到一个新的模式。

我正在寻找一种方式来实现这一点。 我看着使用CMD但它是不是一个很好的解决方案,因为我有一个客户端应用程序,这需要在客户端服务器的灌输严格的mysqldump的。 另一种选择是使用显示查询自己的植入。 这里的问题是,我需要牛逼从头以及不能有问题的部分实现这一切的是,我将需要根据有外键安排表的顺序(因为如果在表的外键,表我我指着需要首先创建)。

我也想过创建存储过程要做到这一点,但在我的SQL不能访问磁盘存储过程的。

也许有人对这个怎么可以用另一种方式实现的想法?

Answer 1:

您可以尝试使用Apache的ddlutils 。 还有就是中的DDL从数据库导出到一个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);
}


Answer 2:

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

但我认为你正在试图解决的东西,之前已经解决了许多倍。 我不熟悉Java,但也有ORM工具(对于Python至少),可以检查您当前数据库和Java创建(或Python)的一个互补的模式。 然后你就可以部署模式到另一个数据库。



文章来源: how to copy a schema in mysql using java
标签: java mysql jdbc