Hello


2014/1/6 Erik Darling <edarlin...@gmail.com>

> Hi,
>
> I've been developing for MS SQL around four years. I'm starting out with
> some work in Postgresql next week, and I'd like to know if there's any
> equivalent way to do something like this (from my word press)
>
> http://sqldriver.wordpress.com/2013/12/09/generating-inserts-dynamically/
>
> My question is mainly about creating comma delimited column names as
> variables and executing dynamic SQL with them. I've spent some time trying
> to find an answer and I seem to keep running into the same few stack
> questions.
>
> Any advice is appreciated. I think I'm going to end up needing dynamic
> queries like what I've written for similar tasks moving data from files to
> staging tables and then to a larger set of data warehouse tables and
> setting up either views (perhaps materialized?) or more tables for
> reporting.
>

It can look some like

CREATE OR REPLACE FUNCTION sample_insert_noflag(table_from text, table_to
text, query_filter text)
RETURNS void AS $$
DECLARE
  sql text;
  column_names text;
BEGIN
  column_names = (SELECT string_agg(quote_ident(t.column_name), ',')
                    FROM information_schema.tables t
                   WHERE t.table_name = table_from
                     AND t.column_name <> 'STATUSFLAG');
  sql := format('INSERT INTO %I(%s) SELECT %s FROM %I %s',
             table_to, column_names, table_from, query_filter);
  RAISE NOTICE '%', sql;
  EXECUTE sql;
  RETURN;
END;
$$ LANGUAGE plpgsql STRICT;

Regards

Pavel Stehule

> Thanks,
> Erik
>

Reply via email to