Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database 不使用DBI的perl脚本_Database_Perl_Postgresql_Populate - Fatal编程技术网

Database 不使用DBI的perl脚本

Database 不使用DBI的perl脚本,database,perl,postgresql,populate,Database,Perl,Postgresql,Populate,我必须让perl脚本在PostgreSQL中填充数据库,而不使用DBI或任何类型的数据库接口模型。我是一个非常自然的脚本初学者,我已经在这上面呆了很长一段时间了。到目前为止我只有这么多 open my $pipe, '|-', "psql -d postgres -U postgres", @options or die; # NOT SURE WHAT TO DO AFTER THIS close $pipe; 编辑1:现在我正在尝试这样做 for ($count

我必须让perl脚本在PostgreSQL中填充数据库,而不使用DBI或任何类型的数据库接口模型。我是一个非常自然的脚本初学者,我已经在这上面呆了很长一段时间了。到目前为止我只有这么多

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

    close $pipe;
编辑1:现在我正在尝试这样做

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

但是它给了我一个语法错误

就像其他人说的那样,DBI比打印到管道要好得多

然而,这里有一个中途之家。只需将所有SQL打印到标准输出,然后执行以下操作:

myscript.pl | psql -v ON_ERROR_STOP=1 --single-transaction -f -
这使您可以轻松地检查脚本输出/将其发送到文件。psql选项在第一个错误时停止,将所有内容包装在事务中并从STDIN读取。您可能还需要通常的-h/-U选项


就我个人而言,我倾向于打开两个终端,然后从psql提示符写入.sql文件。我喜欢记录我运行的命令。

您最好生成一个大的sql文件,然后直接发送给postgres阅读。通过
open
一条语句一条语句地交互可能会变得非常复杂。
print$pipe“从表中选择*;\n”
,但最好大量使用DBI。你所尝试的是不明智的。你能详细说明一个,或者提供一个例子吗?如果你问我,答案是否定的。我太喜欢你了,不愿意在Perl中通过管道处理SQL带来痛苦。但我所需要做的就是在表中插入任意次数。仅此而已