しばらく前に、isql を使用してテキスト フィールドに値を挿入する方法を探していたところ 、最終的にうまくいくロード コマンドを見つけました。
Perl から実行しようとすると動作しません。構文エラーが発生します。私は2つの別々の方法を試しましたが、どちらも今のところうまくいきません。
各ループ サイクルの最後に 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 コマンドは不自然な死を強制し、ステートメントを単一引用符で囲む必要があったため、これに変更する必要がありました。