Re: Executing plpgsql scripts using psql, is that possible? - Mailing list pgsql-sql

From Adrian Klaver
Subject Re: Executing plpgsql scripts using psql, is that possible?
Date
Msg-id 200601161835.48794.aklaver@comcast.net
Whole thread Raw
In response to Re: Executing plpgsql scripts using psql, is that possible?  (Daniel CAUNE <d.caune@free.fr>)
Responses Re: Executing plpgsql scripts using psql, is that possible?  (Daniel CAUNE <d.caune@free.fr>)
List pgsql-sql
On Monday 16 January 2006 05:55 pm, Daniel CAUNE wrote:
> > -----Message d'origine-----
> > De : pgsql-sql-owner@postgresql.org [mailto:pgsql-sql-
> > owner@postgresql.org] De la part de John DeSoi
> > Envoyé : lundi 16 janvier 2006 08:51
> > À : Daniel CAUNE
> > Cc : pgsql-sql@postgresql.org
> > Objet : Re: [SQL] Executing plpgsql scripts using psql, is that possible?
> >
> > On Jan 16, 2006, at 5:35 AM, Daniel CAUNE wrote:
> > > I would like to write some administration plpgsql scripts that
> > > populate some tables (dimension tables) and to execute them using
> > > psql.  I’m not sure that is possible with psql as it is with Oracle
> > > sqlplus or SQL Server MSQuery:
> >
> > If you want to execute a plpgsql function from a file using psql,
> > just call it with SELECT. So your file might have:
> >
> > create or replace function my_function(params integer)
> > returns integer as $$
> > DECLARE
> >    V_MyObjectID bigint;
> > BEGIN
> >    V_MyObjectID := RegisterMyObject('a string', 'another string');
> >    AddObjectProperty(V_MyObjectID, 'a string');
> >    AddObjectProperty(V_MyObjectID, 'another string');
> > ....
> > END;
> > $$ language plpgsql;
> >
> >
> > SELECT my_function(1);
> >
> >
> > and then psql -f script.sql my_db
>
> Yes, but that requires creating a function while I would prefer not having
> do so, as I said in my previous mail: "I mean, without creating a function
> that wraps the whole, of course! :-)".  Why?  Actually this is not a
> function; this is a script that inserts static data into dimension tables
> such as Country, Language, etc.
>
> I have several scripts responsible for creating the database and all the
> objects (tables, views, constraints, indexes, user-defined functions, etc.)
> of my project.  I would like to have some other scripts to initialize
> dimension tables, i.e. inserting static data in those tables.  The idea is
> to automate the whole creation and initialization of a database on a
> PostgreSQL server; I already have an Ant task that searches for SQL files,
> orders them, and runs them against the specified database server.  The
> database and all relative objects are set up in one step.
>
> So, I completely understand that I can write an SQL script that:
>
>   1 - creates a function that wraps SQL code that inserts static data into
> dimension tables. 2 - executes that function
>   3 - destroys that function
>
> But actually that is a bit weird, isn't it?
>
> Thanks,
>
>
> Daniel
>
>
> ---------------------------(end of broadcast)---------------------------
> TIP 9: In versions below 8.0, the planner will ignore your desire to
>        choose an index scan if your joining column's datatypes do not
>        match
If you want to use plpgsql it will need to be within a function. In your reply
you mention creating user-defined functions as part of the set up procedure.
It would not be weird to include the static data function as part of that
procedure and then call it to load the data. I see no reason to destroy the
function after use. If that is not the route you want to take you may want to
look at the following for information on using COPY to load data from a file
into a table-
www.postgresql.org/docs/8.1/interactive/sql-copy.html

--
Adrian Klaver
aklaver@comcast.net


pgsql-sql by date:

Previous
From: Daniel CAUNE
Date:
Subject: Re: Executing plpgsql scripts using psql, is that possible?
Next
From: John DeSoi
Date:
Subject: Re: Executing plpgsql scripts using psql, is that possible?