-1

我有一个 CSV,其中包含 3 个字段,如下所示:

value1, value2, value 3

注意:第 3 个字段中的“值”和“3”之间有一个空格。

我正在使用 perl DBD::Oracle 和 DBI 将这些数据逐行上传到 Oracle DB。

这是我用来上传的查询:

$dbh->do ("INSERT INTO $table VALUES ($col1_value, $col2_value, $col3_value)");

但是,上传和抱怨如下:

DBD::Oracle::db do failed: ORA-00917: missing comma (DBD ERROR: error possibly near <*> indicator at char 103 in 'INSERT INTO TABLE_NAME VALUES (value1, value2, value <*>3 )')

所以它在包含空格的第三个值上失败。

您能指导我如何将带有“空格”的字符串上传到 Oracle。

顺便说一句,我不是预言家,所以如果我做错了什么,请指出我。

谢谢。

4

1 回答 1

4

出于多种原因(安全性、效率、正确性),您希望使用占位符将值放入 SQL 中。

my $rows = $dbh->do (
    "INSERT INTO $table VALUES (?, ?, ?)",
    undef,
    $col1_value, $col2_value, $col3_value
);

这避免了出于语法和安全目的而需要进行任何转义。

于 2012-07-25T06:50:26.017 回答