Re: Dynamic SQL - transition from ms to pg

From: Pavel Stehule <pavel(dot)stehule(at)gmail(dot)com>
To: Erik Darling <edarling80(at)gmail(dot)com>
Cc: "pgsql-general(at)postgresql(dot)org >> PG-General Mailing List" <pgsql-general(at)postgresql(dot)org>
Subject: Re: Dynamic SQL - transition from ms to pg
Date: 2014-01-06 08:25:02
Message-ID: CAFj8pRCRu6z4D0e4=c2_A_it0HDeDu5fROAUo=eyjNukBLN0Mg@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

Hello

2014/1/6 Erik Darling <edarling80(at)gmail(dot)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
>

In response to

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Martijn van Oosterhout 2014-01-06 11:18:42 WAL archive cleanup om master
Previous Message Shuwn Yuan Tee 2014-01-06 08:19:23 postgres_fdw foreign table performance Issue