Я пытаюсь извлечь схему и имя таблицы из запроса sql внутри тега xml
Пример
<head>
<sql> select 1 from owner_a.table1 </sql>
<sql> select 1 from owner_b.table2 , owner_b.table3 where ... </sql>
<sql> select 1 from owner_c.table4 join owner_c.table5 on ... left join owner_c.table 6 on .. </sql>
<head>
Как вы можете заметить, sql возможно в другом формате.
- может или не может быть в ANSI
- может или не может содержать, где пункт
схема и имя таблицы также не имеют определенного шаблона c.
Чтобы извлечь sql из файла xml, я использовал xml_grep.
xlm_grep 'sql' --text_only $file.xml
Следующая задача и часть, в которой я застрял, - это получить схему и таблицу имя в этом выводе
schema | table_name
owner_a | table1
owner_b | table2
owner_b | table3
owner_c | table4
owner_c | table5
owner_c | table6
подход, о котором я думаю -
для неанси-запросов -
- получить строку после слова "от" до "где "
- разделить строку, используя запятую в качестве разделителя, - снова разделить, используя". " в качестве разделителя для разделения схемы и имени таблицы
для запросов ANSI
- получить строку после слова "join"
- разделить с помощью "." как разделитель
это самый эффективный способ сделать это? это выполнимо с использованием grep, sed или awk?