in tools/hologres_text2data.py [0:0]
def _extract_sql_from_text(self, text: str) -> str:
import re
"""Intelligently extract SQL content (compatible with cases with or without code block wrapping)"""
# Match cases wrapped in code blocks
code_block_pattern = r'(?s)```sql(.*?)```'
code_match = re.search(code_block_pattern, text)
if code_match:
return code_match.group(1).strip()
# Match pure SQL not wrapped
sql_pattern = r'(?si)^\s*((?:SELECT|INSERT|UPDATE|DELETE|WITH|CREATE|ALTER|DROP).+?)(;|$|\n\s*$)'
sql_match = re.search(sql_pattern, text, re.DOTALL)
if sql_match:
# Remove possible non-statement terminators at the end
sql = sql_match.group(1).rstrip(';').strip()
return f"{sql};" if sql_match.group(2) == ';' else sql
# Fallback: return SQL-like parts from the original text
clean_text = re.sub(r'[\n\r\t]+', ' ', text).strip()
return clean_text if any(kw in clean_text.upper() for kw in ['SELECT', 'FROM', 'WHERE']) else ""