不久前,我正在寻找一种通过 isql 将值插入文本字段的方法 ,最终找到了一些适合我的加载命令。
当我尝试从 Perl 执行它时它不起作用。我收到语法错误。我尝试了两种不同的方法,但到目前为止都不起作用。
我在每个循环周期结束时打印出 SQL 语句变量,所以我知道语法是正确的,但只是没有正确理解。
这是我正在测试的最新代码片段:
foreach(@files)
{
$STMT = <<EOF;
load from $_ insert into some_table
EOF
$sth = $db1->prepare($STMT);
$sth->execute;
}
@files
是一个数组,其元素是管道分隔文本文件的完整路径/位置(例如 /home/xx/xx/xx/something.txt)
表中的列数与文本文件中的字段数匹配,类型检查很好(我已经手动加载了测试文件,没有失败)
我回来的错误是:
DBD::Informix::db prepare failed: SQL: -201: A syntax error has occurred.
知道可能是什么原因造成的吗?
编辑 RET 和 Petr 的答案
$STMT = "'LOAD FROM $_ INSERT INTO table'";
system("echo $STMT | isql $db")
我不得不把它改成这个,因为 die 命令会强制非自然死亡,并且语句必须用单引号括起来。