Thread: Re: CREATEDB Where ??

Re: CREATEDB Where ??

From
reina@nsi.edu (Tony Reina)
Date:
Peter Moscatt <pmoscatt@bigpond.net.au> wrote in message news:<4x9f7.126086$Xr6.689318@news-server.bigpond.net.au>...
> I am pretty new to PostgreSQL so please bare with me  :-)
> 
> When issuing the CREATEDB MyDb  then creating some tables with CREATE 
> TABLE, I then go back and do a search for the file I have just created 
> (MyDb) but can't find the physical file.
> 
> Does one actually exist ??
> 
> Pete

Sure it does. The problem you are having is that since the
implementation of TOAST in PG 7.1, all of the db and table names are
represented by numbers in the physical file system
(usr/local/pgsql/data/base). So if you tried to do an 'ls' or 'find'
for the name of your database, it probably wouldn't show up. However,
just do a 'psql {db_name}' (where {db_name} is the name of your
database) and you'll see that everything is kosher.

To translate the oid numbers to their respective names, use the
oid2name function found in the /contrib under your Postgres source
code.

-Tony


Re: CREATEDB Where ??

From
Peter Moscatt
Date:
Thanks Tony... yes that helps explain why I am not seeing what I expected 
to see.

Right.....  If I was developing an application, say with Python and I 
needed to transport my created database and make it part of an installation 
process (create a tar ball with all needed components), do I just include 
the /usr/local/pgsql/data  directory as part of my dist ??

Pete



Tony Reina wrote:

> Peter Moscatt <pmoscatt@bigpond.net.au> wrote in message
> news:<4x9f7.126086$Xr6.689318@news-server.bigpond.net.au>...
>> I am pretty new to PostgreSQL so please bare with me  :-)
>> 
>> When issuing the CREATEDB MyDb  then creating some tables with CREATE
>> TABLE, I then go back and do a search for the file I have just created
>> (MyDb) but can't find the physical file.
>> 
>> Does one actually exist ??
>> 
>> Pete
> 
> Sure it does. The problem you are having is that since the
> implementation of TOAST in PG 7.1, all of the db and table names are
> represented by numbers in the physical file system
> (usr/local/pgsql/data/base). So if you tried to do an 'ls' or 'find'
> for the name of your database, it probably wouldn't show up. However,
> just do a 'psql {db_name}' (where {db_name} is the name of your
> database) and you'll see that everything is kosher.
> 
> To translate the oid numbers to their respective names, use the
> oid2name function found in the /contrib under your Postgres source
> code.
> 
> -Tony
> 



Re: Re: CREATEDB Where ??

From
Doug McNaught
Date:
Peter Moscatt <pmoscatt@bigpond.net.au> writes:

> Thanks Tony... yes that helps explain why I am not seeing what I expected 
> to see.
> 
> Right.....  If I was developing an application, say with Python and I 
> needed to transport my created database and make it part of an installation 
> process (create a tar ball with all needed components), do I just include 
> the /usr/local/pgsql/data  directory as part of my dist ??

It would be a MUCH better idea instead to include an SQL script that's 
run automatically by the install process.

It's more flexible and more robust against version skew etc.

-Doug
-- 
Free Dmitry Sklyarov! 
http://www.freesklyarov.org/ 

We will return to our regularly scheduled signature shortly.


Re: Re: CREATEDB Where ??

From
Justin Clift
Date:
Hi Pete,

Would it be appropriate to do a SQL dump of the created database via
pg_dump, then reload it during the installation vi psql or the COPY
command?  If you include the whole data/ subdirectory, you'll also get
the WAL logfiles and everything, which you probably don't need.

Of course, you'll need to create a process for updating the *.conf
(postgresql.conf, pg_ident.conf, pg_hba.conf) files correctly too. 
Perl, sed, etc, would all be a starting point here.

Regards and best wishes,

Justin Clift


Peter Moscatt wrote:
> 
> Thanks Tony... yes that helps explain why I am not seeing what I expected
> to see.
> 
> Right.....  If I was developing an application, say with Python and I
> needed to transport my created database and make it part of an installation
> process (create a tar ball with all needed components), do I just include
> the /usr/local/pgsql/data  directory as part of my dist ??
> 
> Pete
> 
> Tony Reina wrote:
> 
> > Peter Moscatt <pmoscatt@bigpond.net.au> wrote in message
> > news:<4x9f7.126086$Xr6.689318@news-server.bigpond.net.au>...
> >> I am pretty new to PostgreSQL so please bare with me  :-)
> >>
> >> When issuing the CREATEDB MyDb  then creating some tables with CREATE
> >> TABLE, I then go back and do a search for the file I have just created
> >> (MyDb) but can't find the physical file.
> >>
> >> Does one actually exist ??
> >>
> >> Pete
> >
> > Sure it does. The problem you are having is that since the
> > implementation of TOAST in PG 7.1, all of the db and table names are
> > represented by numbers in the physical file system
> > (usr/local/pgsql/data/base). So if you tried to do an 'ls' or 'find'
> > for the name of your database, it probably wouldn't show up. However,
> > just do a 'psql {db_name}' (where {db_name} is the name of your
> > database) and you'll see that everything is kosher.
> >
> > To translate the oid numbers to their respective names, use the
> > oid2name function found in the /contrib under your Postgres source
> > code.
> >
> > -Tony
> >
> 
> ---------------------------(end of broadcast)---------------------------
> TIP 1: subscribe and unsubscribe commands go to majordomo@postgresql.org

-- 
"My grandfather once told me that there are two kinds of people: those
who work and those who take the credit. He told me to try to be in the
first group; there was less competition there."  - Indira Gandhi


Re: Re: CREATEDB Where ??

From
Tom Lane
Date:
Peter Moscatt <pmoscatt@bigpond.net.au> writes:
> Right.....  If I was developing an application, say with Python and I 
> needed to transport my created database and make it part of an installation 
> process (create a tar ball with all needed components), do I just include 
> the /usr/local/pgsql/data  directory as part of my dist ??

No --- a tar dump of your directory will be quite useless to anyone else
on a different platform, and even those on the same platform would
likely not want to blow away their databases and replace 'em with yours.

Instead, use pg_dump to create an SQL script that can be loaded into an
existing database installation.
        regards, tom lane