formatSQLDatabaseNameWithRegex 只对 dbname.scheme.tabname 格式进行数据库名称格式化,转为 "dbname".scheme.tabname 在pgsql中,大小写是通过"" 双引号括起来区分的,默认pg都是转为小写的,所以这里转为 "dbname".scheme."tabname"
(sql string)
| 288 | // formatSQLDatabaseNameWithRegex 只对 dbname.scheme.tabname 格式进行数据库名称格式化,转为 "dbname".scheme.tabname |
| 289 | // 在pgsql中,大小写是通过"" 双引号括起来区分的,默认pg都是转为小写的,所以这里转为 "dbname".scheme."tabname" |
| 290 | func formatSQLDatabaseNameWithRegex(sql string) string { |
| 291 | // 匹配 from dbname.scheme.table_name 的模式 |
| 292 | // 使用捕获组来精确匹配数据库名称,确保后面跟着scheme和table |
| 293 | re := regexp.MustCompile(`(?i)\bfrom\s+([a-zA-Z_][a-zA-Z0-9_]*)\s*\.\s*([a-zA-Z_][a-zA-Z0-9_]*)\s*\.\s*([a-zA-Z_][a-zA-Z0-9_]*)`) |
| 294 | |
| 295 | return re.ReplaceAllString(sql, `from "$1"."$2"."$3"`) |
| 296 | } |
| 297 | |
| 298 | func extractColumns(sql string) ([]string, error) { |
| 299 | // 将 SQL 转换为小写以简化匹配 |