У меня есть определенное требование разбора текста файла типа SQL, ниже приведены подробности.
Огромный запрос:
select
col A,
col B,
.
.
from
(select * from db1.table1 where conditions) t1
left outer join
(select * from db2.table2 where conditions) t2
on table1.col1 = table2.col1
left outer join
(select * from db3.table3 where conditions) t3
on table2.col1 = table3.col3
И запрос может продолжаться следующим образом,Я пытался разобрать и изменить запрос в определенном формате, как показано ниже:
select
col A,
col B,
.
.
from
PH1 t1
left outer join
PH2 t2
on table1.col1 = table2.col1
left outer join
PH3 t3
on table2.col1 = table3.col3
Заполнители (PH), я хочу поместить в другой отдельный файл;Я буду называть их здесь в SQL (и это не проблема).
Я пытаюсь разобрать в bash и действительно не уверен, как заменить внутренние запросы на выборку заполнителями.Первая половина запроса (выше первой FROM
) может быть разделена на sed -n '/^SELECT/,/^FROM/p'
.
Я как-то не в состоянии сформулировать логику о том, как поступить с другой половиной требования.
Есть идеи?