Загрузка данных


WITH candidate_tables AS (
    SELECT table_name
    FROM information_schema.columns
    WHERE table_schema = 'prod_line'
      AND table_name LIKE 'table_param_pl_%'
    GROUP BY table_name
    HAVING
        COUNT(*) FILTER (
            WHERE column_name ILIKE '%from%'
        ) > 0
        AND
        COUNT(*) FILTER (
            WHERE column_name ILIKE '%to%'
        ) > 0
        AND
        COUNT(*) FILTER (
            WHERE data_type IN (
                'numeric',
                'integer',
                'bigint',
                'double precision',
                'real'
            )
        ) >= 4
)
SELECT
    c.table_name,
    c.column_name,
    c.data_type
FROM information_schema.columns c
JOIN candidate_tables t
    ON t.table_name = c.table_name
WHERE c.table_schema = 'prod_line'
ORDER BY
    c.table_name,
    c.ordinal_position;