gpt4 book ai didi

java - 如何使用java复制mysql中的模式

转载 作者:行者123 更新时间:2023-11-29 08:48:40 24 4
gpt4 key购买 nike

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

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

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

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

最佳答案

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

api usage该页面包含有关如何将架构导出到 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);
}

关于java - 如何使用java复制mysql中的模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11878034/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com