|
@@ -46,6 +46,9 @@ public class DataGovernanceServiceImpl implements DataGovernanceService {
|
|
|
@Value("${spring.datasource.druid.master.password}")
|
|
|
private String password;
|
|
|
|
|
|
+ @Value("${sqlFilePath}")
|
|
|
+ private String sqlFilePath;
|
|
|
+
|
|
|
|
|
|
@Override
|
|
|
public List<DatabaseInfo> getDatabaseList() {
|
|
@@ -169,7 +172,7 @@ public class DataGovernanceServiceImpl implements DataGovernanceService {
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public List<Map> getTableTitleList(String tableName) {
|
|
|
+ public List<String> getTableTitleList(String tableName) {
|
|
|
Map<String, String> param = new HashMap<>();
|
|
|
String[] strings = tableName.split("\\.");
|
|
|
param.put("dataBaseName", strings[0]);
|
|
@@ -270,11 +273,71 @@ public class DataGovernanceServiceImpl implements DataGovernanceService {
|
|
|
scriptRunner.runScript(isr);
|
|
|
scriptRunner.closeConnection();
|
|
|
isr.close();
|
|
|
- result.put("message", "复制失败!选择的表结构不同");
|
|
|
- result.put("type", "error");
|
|
|
+ result.put("message", "导入成功");
|
|
|
+ result.put("type", "success");
|
|
|
return result;
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ public File exportTable(String databaseName, String tableName) throws Exception {
|
|
|
+ String table = databaseName + "." + tableName;
|
|
|
+ Map<String, String> createTableSql = dataGovernanceMapper.getCreateTableSql(table);
|
|
|
+ List<Map> tableData = dataGovernanceMapper.getTableDataByTableName(table);
|
|
|
+ Map<String, String> param = new HashMap<>();
|
|
|
+ param.put("dataBaseName", databaseName);
|
|
|
+ param.put("tableName", tableName);
|
|
|
+ List<String> tableTitle = dataGovernanceMapper.getTableTitleListByTableName(param);
|
|
|
+ String fileName = sqlFilePath +"/" + tableName + ".sql";
|
|
|
+ File file = new File(fileName);
|
|
|
+ if (file.exists()) {
|
|
|
+ file.delete();
|
|
|
+ }
|
|
|
+ file.createNewFile();
|
|
|
+ FileWriter fw = null;
|
|
|
+ BufferedWriter bw = null;
|
|
|
+ fw = new FileWriter(file);
|
|
|
+ bw = new BufferedWriter(fw);
|
|
|
+ bw.write("");
|
|
|
+ bw.append("SET NAMES utf8mb4;\n");
|
|
|
+ bw.append("SET FOREIGN_KEY_CHECKS = 0;\n");
|
|
|
+ bw.append("DROP TABLE IF EXISTS `" + tableName + "`;\n");
|
|
|
+ bw.append(createTableSql.get("Create Table"));
|
|
|
+ bw.append(";\n");
|
|
|
+ for (Map datum : tableData) {
|
|
|
+ StringBuilder sqlBuilder = new StringBuilder("");
|
|
|
+ StringBuilder valueBuilder = new StringBuilder("");
|
|
|
+ sqlBuilder.append("INSERT INTO `");
|
|
|
+ sqlBuilder.append(tableName);
|
|
|
+ sqlBuilder.append("`(");
|
|
|
+ valueBuilder.append("(");
|
|
|
+ for (String title : tableTitle) {
|
|
|
+ Object data = datum.get(title);
|
|
|
+ if(data!=null){
|
|
|
+ valueBuilder.append("'");
|
|
|
+ valueBuilder.append(data);
|
|
|
+ valueBuilder.append("'");
|
|
|
+ valueBuilder.append(",");
|
|
|
+ }else{
|
|
|
+ valueBuilder.append(data);
|
|
|
+ valueBuilder.append(",");
|
|
|
+ }
|
|
|
+ sqlBuilder.append(title);
|
|
|
+ sqlBuilder.append(",");
|
|
|
+
|
|
|
+ }
|
|
|
+ sqlBuilder.deleteCharAt(sqlBuilder.length() - 1);
|
|
|
+ valueBuilder.deleteCharAt(valueBuilder.length() - 1);
|
|
|
+ sqlBuilder.append(") VALUES");
|
|
|
+ valueBuilder.append(");\n");
|
|
|
+ sqlBuilder.append(valueBuilder);
|
|
|
+ bw.append(sqlBuilder.toString());
|
|
|
+ }
|
|
|
+
|
|
|
+ bw.close();
|
|
|
+ fw.close();
|
|
|
+ return file;
|
|
|
+ }
|
|
|
+
|
|
|
|
|
|
private Boolean verifySQLName(String text) {
|
|
|
return text.isEmpty() || !text.matches("^[a-zA-Z_][a-zA-Z0-9_]{0,63}$");
|