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

是否有JDBC命令来禁用表中的索引,jdbc,indexing,Jdbc,Indexing,我已经编写了一些Java代码来使用JDBC将表的内容从一个DB复制到另一个DB(它要求表在两个DB中都存在,它不检查目标表是否存在它所复制的任何数据) 它使用预先准备好的语句,并以10000块的形式复制。我想添加禁用所有索引/外键约束的功能,然后在表被完全复制后重新启用它们 有没有一种方法可以使用纯JDBC来实现这一点,也就是说,不只是通过一些特定于供应商的代码来实现?JDBC本身没有提供这种功能。您需要使用特定于数据库的功能来执行此操作。简短回答:不,没有 详细回答: 给定一个java.sql

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

它使用预先准备好的语句,并以10000块的形式复制。我想添加禁用所有索引/外键约束的功能,然后在表被完全复制后重新启用它们


有没有一种方法可以使用纯JDBC来实现这一点,也就是说,不只是通过一些特定于供应商的代码来实现?

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

简短回答:不,没有

详细回答: 给定一个java.sql.Connection,则连接:

DatabaseMetaData    metaData = theConnection.getMetaData ();
String              dbType = metaData.getDatabaseProductName ();
String              command;
对于“MySQL”:


您正在使用哪个数据库?JDBC只是一个与数据库无关的API,它属于特定于数据库的功能领域,不属于JDBC的一部分。@MarkrotVeel如果只有特定于数据库的方法可以做到这一点,答案将是“否”。:-(是的,没错。
command = "ALTER TABLE <tableName> [ENABLE | DISABLE] KEYS;"
command = "ALTER INDEX ALL ON <tableName> [REBUILD | DISABLE];"
Statement   stmt = theConnection.createStatement ();
stmt.execute (command);