Re: psql question - Mailing list pgsql-general

From Steve Crawford
Subject Re: psql question
Date
Msg-id 5109A356.9070207@pinpointresearch.com
Whole thread Raw
In response to psql question  ("Little, Douglas" <DOUGLAS.LITTLE@orbitz.com>)
Responses Re: psql question  (Tom Lane <tgl@sss.pgh.pa.us>)
Re: psql question  ("Little, Douglas" <DOUGLAS.LITTLE@orbitz.com>)
List pgsql-general
On 01/30/2013 01:51 PM, Little, Douglas wrote:

I’m looking for a way where I can tailor DDL scripts for deployment with environment variables.

Support I have a requirement to prefix table names with dev_ , fqa_, or prod_

 

I’d like to have a file for each env with their own unique settings – host, dbname

Dev.sql

                \set env dev

Fqa

                \set env fqa

 

prod

                \set env prod

 

and then

 

my deployment script would have

ddl.sql

\i :env.sql

Create table schema.:env_tablename….

 

 

I tried it and didn’t work.

p1gp1=> \set env dev

p1gp1=> \i P1GP1_ETL_STAGE_TBLS_BIO6113_100.:env.sql

P1GP1_ETL_STAGE_TBLS_BIO6113_100.:env.sql: No such file or directory

 

Any thoughts on how I might get this to work?


Perhaps try concatenating variables then executing the result. For example, given a file "foo.psql" containing "select now();" and "bar.psql" containing "select 'Hello world';"

steve@[local] => \set env foo
steve@[local] => \set scriptname :env '.psql'
steve@[local] => \i :scriptname
              now             
-------------------------------
 2013-01-30 14:45:36.423836-08

steve@[local] => \set env bar
steve@[local] => \set scriptname :env '.psql'
steve@[local] => \i :scriptname
  ?column?  
-------------
 Hello world

Cheers,
Steve

pgsql-general by date:

Previous
From: "Little, Douglas"
Date:
Subject: psql question
Next
From: Adrian Klaver
Date:
Subject: Re: naming of wal-archives