Files
ai_logistic_outlook_integra…/files/redaction_23ai.sql
2025-11-12 08:53:59 -03:00

77 lines
2.3 KiB
SQL
Raw Permalink Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
CREATE TABLE PROCESSED_EMAILS (
ID NUMBER GENERATED ALWAYS AS IDENTITY,
DATE_SENT TIMESTAMP,
BOOKING VARCHAR2(100),
EMAIL_FROM VARCHAR2(500),
EMAIL_TO VARCHAR2(1000),
SUBJECT VARCHAR2(1000),
STATUS VARCHAR2(100),
INSERT_DATE TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (ID)
);
ALTER TABLE PROCESSED_EMAILS ADD (
BRIEF_DESCRIPTION VARCHAR2(1000),
ALERT VARCHAR2(10),
THREAD_INDEX NUMERIC(10),
FILE_NAME VARCHAR(400)
);
CREATE OR REPLACE VIEW PROCESSED_EMAILS_REDACTED AS
SELECT
----------------------------------------------------------------------
-- EMAIL_TO: remove names, parentheses, and mask all email addresses
----------------------------------------------------------------------
REGEXP_REPLACE(
REGEXP_REPLACE(
REGEXP_REPLACE(
-- 1⃣ Remove names and content inside parentheses before the <email>
EMAIL_TO,
'([[:alpha:]][[:alpha:] .''()_-]*)<([^>]+)>',
'<\2>'
),
-- 2⃣ Mask email addresses
'([A-Za-z])([A-Za-z0-9._%+-]*)@([A-Za-z])([A-Za-z0-9.-]*)(\.[A-Za-z]{2,}(?:\.[A-Za-z]{2,})*)',
'\1******@\3******\5',
1, 0, 'i'
),
-- 3⃣ Normalize ";" separators
'\s*;\s*', '; '
) AS EMAIL_TO,
----------------------------------------------------------------------
-- EMAIL_FROM: same treatment (remove names, parentheses, mask)
----------------------------------------------------------------------
REGEXP_REPLACE(
REGEXP_REPLACE(
REGEXP_REPLACE(
EMAIL_FROM,
'([[:alpha:]][[:alpha:] .''()_-]*)<([^>]+)>',
'<\2>'
),
'([A-Za-z])([A-Za-z0-9._%+-]*)@([A-Za-z])([A-Za-z0-9.-]*)(\.[A-Za-z]{2,}(?:\.[A-Za-z]{2,})*)',
'\1******@\3******\5',
1, 0, 'i'
),
'\s*;\s*', '; '
) AS EMAIL_FROM,
SUBJECT,
----------------------------------------------------------------------
-- Mask BOOKING (for example, a code or sensitive text)
----------------------------------------------------------------------
REGEXP_REPLACE(
BOOKING,
'([A-Za-z0-9])([A-Za-z0-9 _.-]*)',
'***'
) AS BOOKING,
DATE_SENT,
STATUS,
FILE_NAME,
THREAD_INDEX,
INSERT_DATE,
BRIEF_DESCRIPTION,
ALERT
FROM PROCESSED_EMAILS;