[pgsql-jp: 25121] Re: INSERT文に関して

Tadashi Kanbayashi Tadashi.Kanbayashi @ toppan.co.jp
2002年 3月 7日 (木) 12:12:00 JST


神林です。

下記の件、参考になりました。

ところで、

my $sth = $dbh->prepare('INSERT INTO tbl VALUES(?, ?)');

のprepare句で、ある配列にinsert文を100個保持しておいて、
その配列をprepareに食わせることも可能だと思いますけど、

@ins = (insert・・・ insert・・・ insert・・・ ・・・・・100個)
my $sth = $dbh->prepare(”@ins”);

素直に、
my $sth = $dbh->prepare('INSERT INTO tbl VALUES(?, ?)');
#以下のexecute文を繰り返し
$sth->execute('a', 'b');
$sth->execute('c', 'd');

のほうが良いでしょうか。

勉強になりました。
ありがとうございました。


-----Original Message-----
差出人 : KAWAI,Takanori <GCD00051 @ nifty.ne.jp>
宛先 : pgsql-jp @ ml.postgresql.jp <pgsql-jp @ ml.postgresql.jp>
日時 : 2002年3月7日 7:05
件名 : [pgsql-jp: 25117] Re: INSERT文に関して


>川合孝典です。
>#NiftyのWebメールから出したら、違うアドレスになって送信されて
>#しまいました。申し訳ありませんでした。
>
>----- Original Message -----
>From: "Tadashi Kanbayashi" <Tadashi.Kanbayashi @ toppan.co.jp>
>To: <pgsql-jp @ ml.postgresql.jp>
>Sent: Wednesday, March 06, 2002 4:40 PM
>Subject: [pgsql-jp: 25098] INSERT文に関して
>
>
>> 神林ともうします。
>>
>> SQL文に関して質問です。
>>
>> insert文で、 一度に複数行のデータを書きこむ方法は
>> ありますでしょうか。副問い合わせでもなく、COPYコマンドでもなく、
>(中略)
>> Perl&DBIでプログラムを書いていますが、
>> 動的にDBに登録するデータを作成していて
>> (配列で保持)、それを今はinsert文をぐるぐるまわして
>> 処理しています。なんとか、1文で書けないかと思う次第です。
>> そのほうが、パフォーマンスの点でも良いですよね。
>> (何回もprepare等する必要ないですし)
>(以下略)
>とりあえずDBIを使っているのであれば、まずはプレースホルダを
>使うほうのが基本でしょう。
>my $sth = $dbh->prepare('INSERT INTO tbl VALUES(?, ?)');
>
>$sth->execute('a', 'b');
>$sth->execute('c', 'd');
>#もちろん配列で繰り返しするとして
>それだけでもパフォーマンス的に改善するはず。
>#DBD::Pgの場合、特にプレースホルダを見つけるために
>#Cで検索してるんですから、使ってあげないのは可哀想(^^?
>
>もっとも大量のデータを入れようとするのであれば
>COPYコマンドを使うことを考えたほうがいいかもしれません。
>
>===================================================
>川合 孝典 (Hippo2000)
>   DBI日本語メーリングリスト管理人、Kansai.pm所属
>   kwitknr @ cpan.org GCD00051 @ nifty.ne.jp
>   http://member.nifty.ne.jp/hippo2000
>   http://www.hippo2000.net/
>「Perlを256倍使うための本 DBI編」 3/14発売(^^)
>===================================================
>
>





pgsql-jp メーリングリストの案内