我编写了一些Java代码来使用JDBC将表的内容从一个DB复制到另一个DB(它要求表存在于两个DB中,它不检查目标表是否存在任何数据库它复制的数据。)
它使用PreparedStatements,并以10,000块为单位进行复制。我想添加禁用所有索引/外键约束的功能,然后在完全复制表时重新启用它们。
有没有办法使用纯JDBC来做到这一点,即不只是解雇某些特定于供应商的代码?
答案 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);