gpt4 book ai didi

perl - 使用 Perl 插入到 PostgreSQL 表中

转载 作者:行者123 更新时间:2023-11-29 12:46:54 25 4
gpt4 key购买 nike

我正在尝试自动填充 PostgreSQL 数据库中的表。不幸的是,我没有让插入语句起作用。

第一行是整数ID,第二列是数字数据类型。我正在使用 Perl 脚本来实现这一点。

我正在使用 rand 函数创建介于 0 和 1 之间的随机数。第一个参数是变量 $id;第二个参数是变量 $count

根据计数,表格将填充后跟随机数的 ID。

我正在使用 PostgreSQL 9.2.4。

-ID | Random_Number
-1 | 0.01
-1 | 0.03
-2 | 0.0566

#!/usr/bin/perl

use DBI;

my $id = <>;
my $count = <>;

my $db_host = 'localhost';
my $db_user = 'postgres';
my $db_pass = '12345';
my $db_name = 'postgres';

my $db = "dbi:Pg:dbname=${db_name};host=${db_host}";

$dbh = DBI->connect($db, $db_user, $db_pass, { RaiseError => 1, AutoCommit => 0 })
|| die "Error connecting to the database: $DBI::errstr\n";

for (my $loop = 0; $loop < $count; $loop++) {
my $random_number = rand();
my $loop++;
my $query = "insert into random_table values($loop,$random_number)";
}

最佳答案

这不必要地复杂。只是:

CREATE TABLE random_table(id integer, random_value float);

然后:

my $dbh = DBI->connect($db, $db_user, $db_pass,{ RaiseError => 1, AutoCommit => 0 })
my $sth $dbh->prepare("INSERT INTO random_table(id,random_value) SELECT x, random() FROM generate_series(?,?);")
my $result = $sth->execute(0, $count);

(未经测试,但我很确定这是正确的)。

顺便说一句,您真的需要:

use strict;
use warnings;
use 5.10.1; // or whatever the oldest Perl you support is

在你的脚本中。

关于perl - 使用 Perl 插入到 PostgreSQL 表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15961240/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com