解析sql中的表名

最近的项目需求中需要解析sql得表名,由于只需要表名我觉得应该用相对粗暴一点的方式来解析

初步思路:

1.转义字符:去除两个引号连在一起的

2.字符串: 去除所有被引号包裹的

3.括号:识别括号处理

4.关键字: 用关键字切割语句,去除与表名 无关的

5.解析与表名有关的切割分段得表名

 

先是粗暴的括号处理

def get_str(s):
you = 0
st = []
re = ''
max_you = 0
for ii in s:
st.append(ii)
while st:
tmp = st.pop()
re = tmp + re
if tmp == ')':
you += 1
if max_you < you:
max_you = you
elif tmp == '(':
you -= 1
if you == 0:
return [re, max_you]
return [s, max_you]


s = "(1,2,(a,b),3,4,(a,b,(0,c,s,1000),(1,a,1200),(2,1400),(3,1600),(4,1800),n,m),((sd,df),(sw,gt))t,b)"

array = []
array_level = []

for ch in range(len(s)):
if s[ch] == ')':
next_str = get_str(s[:ch+1])
while len(array_level) < next_str[1]:
array_level.append([])
array.append(next_str[0])
array_level[next_str[1]-1].append(next_str[0])


print array
print '-' * 60
for i in array_level:
print i

转载于:https://www.cnblogs.com/jt-huang/p/5817352.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
解析SQL语句提取名并将结果输出到文本文件,可以使用编程语言(如Python)SQL解析库进行操作。 首先,需要安装并导入相应的SQL解析库,例如`sqlparse`库。 然后,读取SQL语句的文本文件(假设名为`sql_query.sql`),将其内容存储在一个字符串变量。 接下来,使用`sqlparse`库的`parse`函数对SQL语句进行解析,将解析的结果保存在一个变量。 通过遍历解析结果,我们可以提取出SQL语句的每个名,并将其存储在一个列。 最后,将提取出的名列的每个名按行输出到一个文本文件,这样就完成了将名提取并输出的操作。 下面是一个示例代码: ```python import sqlparse # 读取SQL语句的文本文件 with open('sql_query.sql', 'r') as file: sql_query = file.read() # 解析SQL语句 parsed_query = sqlparse.parse(sql_query) # 提取名 table_names = [] for statement in parsed_query: for token in statement.tokens: if token.is_group() and token.get_real_name() == 'FROM': for identifier in token.get_identifiers(): table_names.append(identifier.get_real_name()) # 输出名到文本文件 output_file = 'table_names.txt' with open(output_file, 'w') as file: for table_name in table_names: file.write(table_name + '\n') print(f"成功将名提取并输出到了文件:{output_file} ") ``` 在上述代码,需要将SQL语句的文本文件命名为`sql_query.sql`,并将输出的文本文件命名为`table_names.txt`。请确保路径正确,并确保能够在运行该代码时正确安装并导入`sqlparse`库。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值