#python #sql
Вопрос:
У меня есть несколько sql, у которых есть ненужный псевдоним, и я пытаюсь удалить их с помощью скрипта python. все, что мне нужно сделать, это найти тот же псевдоним, если совпадения удаляют его. Не мог бы кто-нибудь, пожалуйста, помочь мне в исправлении кода
select "a" as "a",
"b" as "b",
"c" as "c",
IFF(instru(UPPER(suff), ' '), midstru("CD_EXTRACT", instru(UPPER("SOLDTO_SUFF"), ' ')
|| 1),"SOLDTO_SUFF") ) as "CD_EXTRACT_SOLD",
FROM(
select "a" as "a",
sum(b) as "b",
CASE WHEN (DAYOFWEEK("DEL_DATE")-1) = 0 THEN 'Monday' else "tuesday'
END as "CD_ACT_DEL_DATE" ,
suff as suff, CD_EXTRACT as CD_EXTRACT, SOLDT1 AS SOLD_SUFF,
"c" as "c" from aint
Ожидаемый результат выглядит следующим образом
select "a",
"b",
"c",
IFF(instru(UPPER(suff), ' '), midstru("CD_EXTRACT", instru(UPPER("SOLDTO_SUFF"), ' ')
|| 1),"SOLDTO_SUFF") ) as "CD_EXTRACT_SOLD",
FROM(
select "a",
sum(b) as "b",
CASE WHEN (DAYOFWEEK("DEL_DATE")-1) = 0 THEN 'Monday' else "tuesday'
END as "CD_ACT_DEL_DATE" ,
suff, CD_EXTRACT, SOLDT1 AS SOLD_SUFF,
"c" from aint
код, который я попробовал, выглядит следующим образом
ource_file = open('new.sql','r')
source_txt = source_file.read()
start = source_txt.index('SELECT')
end = source_txt.index('FROM')
n = []
target = source_txt[start:end]
splitter = target.split(',')
# print(splitter)
for i in splitter:
a = i.split('as')
if a[0] == a[1]:
n.append(a[1])
else:
n.append(a)
for m in n:
print(m "n")
Комментарии:
1. Зачем беспокоиться? Все работает так, как есть. (Вам нужна полная грамматика SQL, чтобы сделать это правильно».)