我正在尝试使用 sqlparse 提取查询中的所有表名,但我遇到了用括号括起来的子查询或插入语句的问题。
我有以下查询,
import sqlparse
sql = """
create test.test_table as (
select 1
from fake.table
);
"""
当我查找在括号中包含语句的标记时,使用
y = sqlparse.parse(sql)
for i in y[0].tokens:
if isinstance(i, Identifier):
print(i)
print(i.get_real_name())
我得到以下结果,
test.test_table as (
select 1
from fake.table
)
test_table
结果仅作为一个标识符令牌返回。当我尝试从括号内获取表名时,所有返回的是 test.test_table。我最终要做的是提取两个表名 test.test_table 和 fake.table
有没有人对我如何去做这件事有任何见解?