我有一个读取文件并生成sql插入语句的应用程序。现在,我想将50条语句合并到一个块中:
我的解决方案行不通且不完整,因为可能存在只有37个statemets的情况,但是在我的情况下却缺少FROM DUAL; COMMIT;
。
我有点滞留。我想知道一种正确的方法,合并50条语句,剩下的语句较少时,因为它们是最后一条语句,因此也应合并。
也许有人有想法?
模式/输出
INSERT
INTO
INTO
INTO.... (total 50 lines)
FROM DUAL;
COMMIT;
CODE(摘录)
final String template = "INTO %s (%s) VALUES (%s);";
List<String> statements = new ArrayList<>();
for (int i = 1; i < lines.size(); i++) {
........
int counter = 0;
if(counter == 0) {statements.add("INSERT"); }
if(counter == 50) {statements.add("FROM DUAL;\nCOMMIT;"); counter = 0;}
counter++;
statements.add(String.format(template, tableN, cols.toString(), vals.toString())); }
最佳答案
您可以将第一个和最后一个语句移出循环:
statements.add("INSERT");
for (int i = 1; i < lines.size(); i++) {
// ...
statements.add(String.format(template, tableN, cols.toString(), vals.toString()));
}
statements.add("FROM DUAL;\nCOMMIT;");