|
@@ -120,10 +120,16 @@ public class Text2SqlService implements IText2SqlService {
|
|
|
map = text2SqlMapper.selectTableDdlDm(DBaseHelper.getSchema(), tableName);
|
|
|
}
|
|
|
String ddl = map.get("create table");
|
|
|
- question= ddl + "\n" + question + ",根据需求生成" + DBaseHelper.getDbType() + "的查询SQL.\n" +
|
|
|
- "1.严格按照要求,select 后面字段严格按照ddl表结构里面的给出,from 后面的条件不要自己发挥\n" +
|
|
|
- "2.只输出sql语句不需要任何格式样式,就是一串sql.\n" +
|
|
|
- "3.不需要带Schema:" + DBaseHelper.getSchema();
|
|
|
+ question = "你是一个专业的SQL生成助手,请严格按照以下提供的表DDL生成查询语句。\nDLL:\n" + ddl + "\n条件:\n" + question + ",根据需求生成" + DBaseHelper.getDbType() + "的查询SQL.\n" +
|
|
|
+ "1.解析用户提供的表DDL,提取所有字段名称;\n" +
|
|
|
+ "2.生成的查询语句必须仅包含这些字段,不可添加其他字段;\n" +
|
|
|
+ "3. 如果用户未明确指定查询逻辑,默认生成基础SELECT语句.\n" +
|
|
|
+ "4.不需要带Schema:" + DBaseHelper.getSchema() + "\n" +
|
|
|
+ "5.只输出SQL";
|
|
|
+// question= ddl + "\n" + question + ",根据需求生成" + DBaseHelper.getDbType() + "的查询SQL.\n" +
|
|
|
+// "1.生成的查询语句必须仅包含这些字段,不可添加其他字段,from 后面的条件不要自己发挥\n" +
|
|
|
+// "2.只输出sql语句不需要任何格式样式,就是一串sql.\n" +
|
|
|
+// "3.不需要带Schema:" + DBaseHelper.getSchema();
|
|
|
log.info("\nquestion ____________________:\n{}", question);
|
|
|
return ContentVo.builder().content(question).
|
|
|
tableName(tableName).build();
|
|
@@ -131,11 +137,19 @@ public class Text2SqlService implements IText2SqlService {
|
|
|
}
|
|
|
|
|
|
private String cleanRawSql(String rawSql) {
|
|
|
- // 1. 去除代码块标记(如 ```sql)和语言标识
|
|
|
+// // 1. 去除代码块标记(如 ```sql)和语言标识
|
|
|
String cleaned = rawSql.replaceAll("(?i).*```sql\\s*", "")
|
|
|
.replaceAll("\\s*```.*", "")
|
|
|
.trim();
|
|
|
-
|
|
|
+// String cleaned = rawSql.trim();
|
|
|
+// if (rawSql.contains("```")) {
|
|
|
+// cleaned = rawSql.replaceAll("(?i).*```sql\\s*", "")
|
|
|
+// .replaceAll("\\s*```.*", "")
|
|
|
+// .trim();
|
|
|
+// Pattern pattern = Pattern.compile("```([\\s\\S]*?)```");
|
|
|
+// Matcher matcher = pattern.matcher(cleaned);
|
|
|
+// cleaned = matcher.group(1).trim();
|
|
|
+// }
|
|
|
// 2. 去除末尾分号(MySQL允许不带分号执行)
|
|
|
cleaned = cleaned.replaceAll(";\\s*$", "");
|
|
|
return cleaned;
|