在我的应用程序中,我需要将一个模式及其表和存储过程从基本模式复制到新模式。
我正在寻找实现这一目标的方法。 我使用cmd查看了mysqldump,但它不是一个好的解决方案,因为我有一个客户端应用程序,这需要在客户端灌输服务器。 另一种选择是使用show query我自己植入。 这里的问题是我需要从头开始实现它,必须有问题的部分是我需要根据外键来安排表的顺序(因为如果表中有外键,表我我指的是需要先创建的。)
我还考虑过创建一个存储过程来执行此操作,但是我的SQL存储过程无法访问磁盘。
也许有人知道如何以另一种方式实现这一点?
答案 0 :(得分:2)
您可以尝试使用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);
}
答案 1 :(得分:0)
您可以使用information_schema
获取外键信息并构建依赖关系树。这是一个example。
但我认为你正试图解决之前已经解决过很多次的事情。我不熟悉Java,但是有ORM工具(至少对于Python)可以检查当前数据库并在Java(或Python)中创建补充模型。然后,您可以将该模型部署到另一个数据库中。