Re: Dynamic SQL - transition from ms to pg - Mailing list pgsql-general

From Erik Darling
Subject Re: Dynamic SQL - transition from ms to pg
Date
Msg-id CAO+EYw+J8=ayhjET8X66bzTm6jv-G+=doCWjAHnAm92aA1sWzg@mail.gmail.com
Whole thread Raw
In response to Re: Dynamic SQL - transition from ms to pg  (Pavel Stehule <pavel.stehule@gmail.com>)
List pgsql-general

Thank you Pavel. That's exactly what I needed to get started.

On Jan 6, 2014 3:25 AM, "Pavel Stehule" <pavel.stehule@gmail.com> wrote:
Hello



2014/1/6 Erik Darling <edarling80@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


pgsql-general by date:

Previous
From: Shuwn Yuan Tee
Date:
Subject: postgres_fdw foreign table performance Issue
Next
From: "Pfuntner, John"
Date:
Subject: Do I have to free storage in a UDF if I raise an error?