чел.
У меня есть тонна SQL-скриптов (более 1000 файлов), и я должен перечислить некоторую информацию о них.Основная проблема заключается в том, чтобы перечислить все таблицы и используемые операции для каждого сценария.Мне нужно найти в основном операции SELECT, INSERT, DELETE и UPDATE.
SELECT EXAMPLE:
SELECT column1, column2
FROM SCHEMA1.TABLE_A A, SCHEMA1.TABLE_B B,
SCHEMA3.TABLE_K, SCHEMA3.TABLE_M,
SCHEMA4.TABLE N
INNER JOIN SCHEMA2.TABLE_C C ON C.COLUMN_XX = A.COLUMN_XX
LEFT JOIN SCHEMA2.TABLE_D D ON D.COLUMN_YY = A.COLUMN_YY
FULL OUTER JOIN SCHEMA2.TABLE_E E ON E.COLUMN_ZZ = B.COLUMN_ZZ
WHERE B.COLUMN_AA = A.COLUMN_AA
AND K.COLUMN_KK = A.COLUMN_KK
AND M.COLUMN_MM = A.COLUMN_MM
AND N.COLUMN_NN = A.COLUMN_NN;
ВЫХОД ДЛЯ ВЫБОРА БУДЕТ БЫТЬ (ЗАКАЗАТЬ НЕ СУЩЕСТВУЕТ):
SCHEMA1.TABLE_A | SELECT
SCHEMA1.TABLE_B | SELECT
SCHEMA3.TABLE_K | SELECT
SCHEMA3.TABLE_M | SELECT
SCHEMA4.TABLE_N | SELECT
SCHEMA2.TABLE_C | SELECT
SCHEMA2.TABLE_D | SELECT
SCHEMA2.TABLE_E | SELECT
ПРИМЕР ВСТАВКИ:
INSERT INTO SCHEMA1.TABLE_A (COLUMN1,COLUMN2) VALUES ('VALUE_1','VALUE_2');
INSERT INTO SCHEMA1.TABLE_B
(COLUMN_1,COLUMN2)
VALUES
('VALUE_1','VALUE_2');
INSERT INTO SCHEMA2.TABLE_C SELECT * FROM SCHEMA5.TABLE_C;
ВЫХОД ДЛЯ ВСТАВКИ БУДЕТ (ЗАКАЗАТЬ НЕ ДЕЛАЕТ):
SCHEMA1.TABLE_A | INSERT
SCHEMA1.TABLE_B | INSERT
SCHEMA2.TABLE_C | INSERT
SCHEMA5.TABLE_C | SELECT (IF IT IS "OK" TO PUT SOMETHING LIKE 'SELECT (INSERT)' WOULD BE BETTER.. IF NOT, THAT'S OK)
УДАЛИТЬ ПРИМЕР:
DELETE FROM SCHEMA3.TABLE_K WHERE K.COLUMN_KK = 'A';
DELETE FROM SCHEMA1.TABLE_A A
INNER JOIN SCHEMA2.TABLE_C C ON C.COLUMN_XX = A.COLUMN_XX
WHERE A.COLUMN_AA = 'A';
ВЫХОД ДЛЯ УДАЛЕНИЯ БУДЕТ (ЗАКАЗАТЬ НЕ ДЕЛАЕТ):
SCHEMA3.TABLE_K | DELETE
SCHEMA1.TABLE_A | DELETE
SCHEMA2.TABLE_C | JOIN (IF IT IS "OK" TO PUT SOMETHING LIKE 'JOIN (DELETE)' WOULD BE BETTER... IF NOT, THAT'S OK)
ПРИМЕР ОБНОВЛЕНИЯ:
UPDATE SCHEMA1.TABLE_A SET COLUMN_AA = 'A';
UPDATE SCHEMA2.TABLE_C SET COLUMN_CC = (SELECT COLUMN_CC FROM SCHEMA5.TABLE_C)
WHERE EXISTS (SELECT * FROM SCHEMA5.TABLE_C C2 WHERE C2.COLUMN_CC = C.COLUMN_CC);
UPDATE SCHEMA2.TABLE_D D
INNER JOIN SCHEMA1.TABLE_A A ON D.COLUMN_ID = A.COLUMN_ID
SET D.COLUMN_DD = A.COLUMN_DD;
ВЫХОД ДЛЯ ОБНОВЛЕНИЯ БУДЕТ (ПОРЯДОК НЕ ДЕЛАЕТ):
SCHEMA1.TABLE_A | UPDATE
SCHEMA2.TABLE_C | UPDATE
SCHEMA5.TABLE_C | SELECT
SCHEMA2.TABLE_D | UPDATE
SCHEMA1.TABLE_A | JOIN (IF IT IS "OK" TO PUT SOMETHING LIKE 'JOIN (UPDATE)' WOULD BE BETTER... IF NOT, THAT'S OK)
Любые подсказки, о которыхполезнее всего это сделать, как преодолеть основные проблемы, такие как разрывы строк после FROM, например, как получить слова после одной конкретной работы (например, как получить то, что после предложения FROM), как определить основную операцию в JOINпункты и т. д., будет очень приветствоваться.
Спасибо всем.