Java 使用JDBI枚举数据库表
有没有一种方法可以使用JDBI获取模式中包含哪些表的信息 我有两个数据库A和B,我需要能够Java 使用JDBI枚举数据库表,java,mysql,jdbc,dropwizard,jdbi,Java,Mysql,Jdbc,Dropwizard,Jdbi,有没有一种方法可以使用JDBI获取模式中包含哪些表的信息 我有两个数据库A和B,我需要能够 handle.execute("show tables"); 查询并从中检索表列表 查询B并检查这些相同的表是否存在并且具有相同的定义(我不关心表中的数据) 我可以使用命令行中的mysqldump执行此操作:从每个数据库检索createtable语句并比较它们。但现在我需要在Dropwizard/JDBI上下文中作为测试的一部分来做 文档有点稀疏,但我找不到任何适合我做的东西。我也许能 handle.e
handle.execute("show tables");
mysqldump
执行此操作:从每个数据库检索createtable
语句并比较它们。但现在我需要在Dropwizard/JDBI上下文中作为测试的一部分来做
文档有点稀疏,但我找不到任何适合我做的东西。我也许能
handle.execute("show tables");
等等,但这似乎有点低,我希望有更好的方法
或者我需要求助于JDBC吗?JDBC有几个独立于数据库提供程序的机制 您可以从连接中获取,并通过表达式对其执行查询(null=any)
注意:这里的名字可能是区分大小写的。我自己也遇到过这个问题。JDBI不提供高级API来完成您的要求,因此您需要使用JDBCAPI。也就是说,如果您不知道,JDBI提供对底层
连接对象的访问,作为JDBC的入口点:
DBI-DBI=。。。;
try(handleh=dbi.open()){
try(连接c=h.getConnection()){
try(ResultSet tables=c.getMetaData().getColumns(null,架构,“%”,“%”){
//在此处循环列/表。。。
}
}
}
根据您的需求,您还可以查看一个功能,该功能可实现您的开箱即用功能:
liquibase.sh --driver=oracle.jdbc.OracleDriver \
--url=jdbc:oracle:thin:@testdb:1521:test \
--username=bob \
--password=bob \
diff \
--referenceUrl=jdbc:oracle:thin:@localhost/XE \
--referenceUsername=bob \
--referencePassword=bob