Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/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
SQL查询的Perl连接_Sql_Postgresql_Perl - Fatal编程技术网

SQL查询的Perl连接

SQL查询的Perl连接,sql,postgresql,perl,Sql,Postgresql,Perl,我正在尝试使用Perl将CSV文件的内容传输到PostgreSQL中的表中 我能够成功更新我的表,但终端返回错误: Use of uninitialized value in concatenation (.) or string Syntax error near "," INSERT INTO test VALUES (, '', '', '', '',, ) 以下是失败的代码: for (my $i=0 ; $i<=50; $i++){ $dbh ->do("INSERT I

我正在尝试使用Perl将CSV文件的内容传输到PostgreSQL中的表中

我能够成功更新我的表,但终端返回错误:

Use of uninitialized value in concatenation (.) or string
Syntax error near ","
INSERT INTO test VALUES (, '', '', '', '',, )
以下是失败的代码:

for (my $i=0 ; $i<=50; $i++){
$dbh ->do("INSERT INTO test VALUES ('$LastName[$i]', '$Street[$i]', $Balance_account[$i])") ;
for(my$i=0;$ido(“插入到测试值中(“$LastName[$i]”,“$Street[$i]”,$Balance_account[$i]));
如果需要更多信息,请询问他们。 对不起,英语不好

--
Thomas

我猜您的错误是由于在insert中没有指定列名,同时列的数量/类型错误造成的。我希望以下Perl代码不会出错:

for (my $i=0 ; $i<=50; $i++){
$dbh -> do("INSERT INTO test (lastname, street, balance) VALUES ('$LastName[$i]', '$Street[$i]', $Balance_account[$i])");
通常认为在插入时不包含列名是一种不好的做法,因为即使你做对了,以后也很容易被破坏。

使用占位符

for (my $i=0 ; $i<=50; $i++){
  $dbh->do("INSERT INTO test VALUES (?,?,?)",
    undef,
    $LastName[$i], $Street[$i], $Balance_account[$i]
  );
}
对于(my$i=0;$ido(“插入测试值(?,,?)”,
未定义,
$LastName[$i],$Street[$i],$Balance\u账户[$i]
);
}
理想情况下,您应该准备查询并为每组值执行,如下所示:

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

for (my $i=0 ; $i<=50; $i++){
  $sth->execute($LastName[$i], $Street[$i], $Balance_account[$i]);
}
my$sth=$dbh->prepare('INSERT INTO test VALUES(?,?));
对于(我的$i=0;$iexecute($LastName[$i],$Street[$i],$Balance_账户[$i]);
}
my $sth = $dbh->prepare('INSERT INTO test VALUES (?,?,?)');

for (my $i=0 ; $i<=50; $i++){
  $sth->execute($LastName[$i], $Street[$i], $Balance_account[$i]);
}