是否有JDBC命令来禁用表中的索引

时间:2017-05-26 16:11:42

标签: jdbc indexing

我编写了一些Java代码来使用JDBC将表的内容从一个DB复制到另一个DB(它要求表存在于两个DB中,它不检查目标表是否存在任何数据库它复制的数据。)

它使用PreparedStatements,并以10,000块为单位进行复制。我想添加禁用所有索引/外键约束的功能,然后在完全复制表时重新启用它们。

有没有办法使用纯JDBC来做到这一点,即不只是解雇某些特定于供应商的代码?

2 个答案:

答案 0 :(得分:2)

JDBC本身没有提供此类功能的任何内容。您需要使用特定于数据库的功能来执行此操作。

答案 1 :(得分:1)

简短回答:不,没有。

更长的回答: 给定java.sql.Connection theConnection:

DatabaseMetaData    metaData = theConnection.getMetaData ();
String              dbType = metaData.getDatabaseProductName ();
String              command;

用于" MySQL":

command = "ALTER TABLE <tableName> [ENABLE | DISABLE] KEYS;"

用于&#34; Microsoft SQL Server&#34;:

command = "ALTER INDEX ALL ON <tableName> [REBUILD | DISABLE];"

(感到鼓励在下面添加其他数据库命令。)一旦有了命令,执行它

Statement   stmt = theConnection.createStatement ();
stmt.execute (command);