在我的应用程序中,我需要将一个模式及其表和存储过程从基本模式复制到新模式.
我正在寻找一种方法来实现这一点.
我使用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,mysql,jdbc
来源: https://codeday.me/bug/20190929/1833689.html