我有csv文件,我想将该数据导入oracle数据库。 但在此之前我想要检查表'xyz'是否存在于数据库中。
我想通过java来实现..谁知道如何通过java做到这一点?
答案 0 :(得分:5)
您可以使用可用的元数据:
DatabaseMetaData meta = con.getMetaData();
ResultSet res = meta.getTables(null, null, null,
new String[] {"TABLE"});
while (res.next()) {
System.out.println(
" "+res.getString("TABLE_CAT")
+ ", "+res.getString("TABLE_SCHEM")
+ ", "+res.getString("TABLE_NAME")
+ ", "+res.getString("TABLE_TYPE")
+ ", "+res.getString("REMARKS"));
}
有关详细信息,请参阅here。
答案 1 :(得分:2)
维基百科在getting at oracle metadata上有一些很好的信息。
SELECT
COUNT(1)
FROM
ALL_TABLES
WHERE
TABLE_NAME = 'NAME_OF_TABLE'
将NAME_OF_TABLE替换为您的表名,如果您得到1的结果,则表示您拥有该表。
答案 2 :(得分:2)
您可以运行虚拟SQL,如:
select from * 'xyz' where 1 = 2
如果您没有收到“ORA-00942表或视图不存在”等任何异常,则表格存在。
或者您选择优雅的方式:
select * from USER_OBJECTS where OBJECT_TYPE = 'TABLE' and OBJECT_NAME = 'xyz';
答案 3 :(得分:1)
public class Main
{
public static void main(String[] args) throws Exception
{
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@//server.local:1521/prod", "scott", "tiger");
conn.setAutoCommit(false);
DatabaseMetaData dbmd = conn.getMetaData();
ResultSet rset = dbmd.getTables("", "SCOTT", "EMP", null);
while (rs.next())
{
System.out.println(rs.getString(3));
//OR use whatever progmatically you want to do if table exist
}
stmt.close();
}
}