Beefy Boxes and Bandwidth Generously Provided by pair Networks
The stupid question is the question not asked
 
PerlMonks  

Re^2: System Function...script does not move until process ends.

by mobiGeek (Beadle)
on Apr 06, 2005 at 18:39 UTC ( [id://445395]=note: print w/replies, xml ) Need Help??


in reply to Re: System Function...script does not move until process ends.
in thread System Function...script does not move until process ends.

Though it might "feel" simpler to stick to Perl and use DBI, for the database in question the approach of going out to the system is likely the cleanest, safest and fastest.

In a nutshell, what he is trying to do is:

dbinit my_new_db.db dbunload my_old_db <<- this creates a file called "reload.sql" dbisql my_new_db.db read reload.sql
throw in some error checking (exit codes, file/directory exists, etc...) and you've got a great rebuild/upgrade mechanism.

I've done exactly this in Perl, Bash/Sh, and .CMD/.BAT.

Replies are listed 'Best First'.
Re^3: System Function...script does not move until process ends.
by CountZero (Bishop) on Apr 07, 2005 at 05:40 UTC
    I see, but then I don't get it why the use of system seems such a problem.
    1. You initiate a new database,
    2. you stop the old one and unload its data,
    3. you reload the data into the new database.
    Seems pretty sequential to me and no need to go into running forks and such.

    Or am I missing a fine point here?

    CountZero

    "If you have four groups working on a compiler, you'll get a 4-pass compiler." - Conway's Law

      Or am I missing a fine point here?

      According to what OP is trying to do and what mobigeek posted, to unload data from the old database you need to start the database again. The database (ie. dbeng9) and sql tool (ie. dbisql) are separate processes that have to run at the same time, hence it is not sequential.

      This being said, it is also possible to tell dbisql to automatically start the database itself. So while connecting to the database, dbisql will figure out that the database isn't actually running so it will launch it using the information you provide and then connect to it. See the "start" connection parameter in the online documentation.

        Thank you for the very clear explanation. It looks to me that Perl is a bit over-kill here and that a simple shell-script could do the job much easier.

        CountZero

        "If you have four groups working on a compiler, you'll get a 4-pass compiler." - Conway's Law

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://445395]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others surveying the Monastery: (8)
As of 2024-05-21 14:07 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found