|
@ -100,9 +100,41 @@ public class SingleTableJob implements Job {
|
|
|
|
|
|
cleanData();
|
|
|
|
|
|
List<Map<String, Object>> list;
|
|
|
list = fetch();
|
|
|
saveData(list);
|
|
|
String sql = sqlGenerate();
|
|
|
String[] countSql = sql.split("from");
|
|
|
sql = "select count(*) from " + countSql[1];
|
|
|
try {
|
|
|
int rows = jdbcTemplate.queryForObject(sql, Integer.class);
|
|
|
int perCount = 10000;
|
|
|
if (rows > perCount) {
|
|
|
int count = rows / perCount;
|
|
|
int remainder = rows % perCount;
|
|
|
if (remainder != 0) {
|
|
|
count++;
|
|
|
} else {
|
|
|
remainder = perCount;
|
|
|
}
|
|
|
for (int i = 0; i < count; i++) {
|
|
|
int row,start = 0;
|
|
|
if (i != 0) {
|
|
|
start = i * perCount;
|
|
|
}
|
|
|
// 确定抽取多少条数据
|
|
|
if (i + 1 == count) {
|
|
|
row = remainder;
|
|
|
} else {
|
|
|
row = perCount;
|
|
|
}
|
|
|
List<Map<String, Object>> list = fetch(start, row);
|
|
|
saveData(list);
|
|
|
}
|
|
|
} else {
|
|
|
List<Map<String, Object>> list = fetch(0, perCount);
|
|
|
saveData(list);
|
|
|
}
|
|
|
} catch (Exception e) {
|
|
|
e.printStackTrace();
|
|
|
}
|
|
|
}
|
|
|
|
|
|
private void prepare(JobExecutionContext jobExecutionContext) {
|
|
@ -165,7 +197,14 @@ public class SingleTableJob implements Job {
|
|
|
|
|
|
}
|
|
|
|
|
|
private List<Map<String, Object>> fetch() {
|
|
|
private List<Map<String, Object>> fetch(Integer start, Integer row) {
|
|
|
String sql = sqlGenerate();
|
|
|
sql += " limit " + start + "," + row;
|
|
|
logger.info("sql={}",sql);
|
|
|
return jdbcTemplate.queryForList(sql);
|
|
|
}
|
|
|
|
|
|
public String sqlGenerate() {
|
|
|
StringBuilder sb = new StringBuilder();
|
|
|
if (StringUtils.isNotEmpty(searchColumn)) {
|
|
|
sb.append("select ").append(primeKey).append(",").append(searchColumn).append(" from ").append(database).append(".").append(table);
|
|
@ -197,11 +236,9 @@ public class SingleTableJob implements Job {
|
|
|
return null;
|
|
|
}
|
|
|
}
|
|
|
logger.info("sql={}",sb.toString());
|
|
|
return jdbcTemplate.queryForList(sb.toString());
|
|
|
return sb.toString();
|
|
|
}
|
|
|
|
|
|
|
|
|
/**
|
|
|
* TODO:没有设置数据库来源和数据库类型,当前使用默认数据库
|
|
|
*
|