[英]Perl concatenation for SQL query
我正在嘗試使用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 ; $i<=50; $i++){
$dbh->do("INSERT INTO test VALUES (?,?,?)",
undef,
$LastName[$i], $Street[$i], $Balance_account[$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]);
}
我的猜測是您的錯誤是由於未在插入中指定列名,而同時具有錯誤的編號/類型的列引起的。 我希望以下Perl代碼不會出錯:
for (my $i=0 ; $i<=50; $i++){
$dbh -> do("INSERT INTO test (lastname, street, balance) VALUES ('$LastName[$i]', '$Street[$i]', $Balance_account[$i])");
這是一個工作查詢可能看起來像:
INSERT INTO test (lastname, street, balance)
VALUES
('Skeet', '100 Thatcher Street', 100.50);
通常,在插入時不包括列名是不明智的做法,因為即使正確使用它,以后也很容易中斷。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.