简体   繁体   中英

perl script without using DBI

I have to make a perl script populate a database in PostgreSQL without using DBI or any sort of database interface model. I am a beginner to scripting so naturally, I'v been stuck on this for quite a while. I only have this much so far.

    open my $pipe, '|-', "psql -d postgres -U postgres", @options or die;
    # NOT SURE WHAT TO DO AFTER THIS

    close $pipe;

edit 1: Now i'm trying to do this.

 for ($count = $iters; $count >= 1; $count--) {
    $randdecimal = rand();
    $pipe "INSERT INTO random_table (runid, random_number) VALUES ($runid, $randdecimal)";
 }

but it gives me a syntax error

Like the others say, DBI is much better than printing to a pipe.

However, there is a halfway house. Just print all your SQL to STDOUT and then do something like:

myscript.pl | psql -v ON_ERROR_STOP=1 --single-transaction -f -

This lets you easily check your script output / send it to a file. The psql options stop on the first error, wrap everything in a transaction and read from STDIN. You might want the usual -h/-U options too.

Personally, I tend to have two terminals open and just write to a .sql file then \\i from a psql prompt. I like having a record of what command I ran.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM