Re: How to use perl dbi to create a database

[email protected] (Darren Duncan)
Newsgroups perl.dbi.users
Message-ID <[email protected]>
Owen wrote:
> On Mon, 28 Jun 2010 04:51:45 -0400
> "Sharma, Sumit" <[email protected]> wrote:
> 
>> I am trying to use Perl to identify if a given database exists or not
>> and if it doesn't create the database and then connect to it.
>>
>> Is there any way using Perl DBI to first identify whether a given
>> database exists or not if it doesn't create the database?
> 
> Well I am not sure what you are trying to do, but lets say your
> database has the name "my_data.db"
> 
> Check that my_data.db exists
> 
>    if (-e my_data.db){connect} else {connect and create}
> 
> See how you go from there

Creating a database is one of the tasks that varies greatly depending on what 
DBMS you are using, and the SQL standard also punts and leaves it to the 
implementations.

If your DBMS is SQLite, then your database is a file and you can use your 
standard -e file test to see if it exists; if it doesn't, then simply connect() 
using DBI with the file name as per an existing one, and SQLite defaults to 
creating said nonexisting database.

If your DBMS is Postgres, what you do depends on whether or not there already 
exists a database cluster and associated server to connect to.  If there is, 
then you can connect() to it using DBI as the 'postgres' user (or a default 
user) and then use a SQL command to test the existence of or create a database 
in the cluster.  If there is a cluster but not a server, you could invoke the 
'postgres' program to start a server to use that cluster as its data, then 
procede to the previous sentence.  Or if there is no cluster, then you could 
invoke the 'initdb' program to create one, then start the server, and connect, 
etc.  All of this you can do within Perl of course.

If your DBMS is something else, then I don't know the answer offhand.

-- Darren Duncan
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.