我想从数据库中提取一个文本字段,并将其插入到其他数据库中。因此,在提取时,我在选择测试时使用了替换(message_text,‘\’,‘“)。我给了我一个错误。我从select语句中更改了这个错误,并在初始化全局变量时进行了修改。
不过,在insert语句中仍有一个错误
insert into lcs_al_user_likes(user_id,liked_user_id,post_content,loop_id) values('${etl.globals['posted_by']}','${etl.globals['liked_user_id']}','${etl.globals['message_text']}',?batchLoopCounter); 说
* SQL语法检查与MySQL服务器版本对应的手册中出现错误,以便在第1行使用接近“message_text]}”的正确语法。
我认为它没有得到全局变量。我说这是因为当我用日志打印它的值时,它只是给了我
${etl.globals'message_text'}
作为输出。所以请帮帮我。
<query connection-id="lcsDBConnection">
SELECT forum_topic_post_id AS forum_topic_post_id, posted_by AS posted_by,message_text as message_text FROM lcs_tbl_forum_topic_post WHERE like_count>0 LIMIT ?batchSize OFFSET ?queryCounter ;
<script connection-id="jexl">
etl.globals['forum_topic_post_id'] = forum_topic_post_id;
etl.globals['posted_by'] = posted_by;
etl.globals['message_text'] = message_text.replace('\'', '"');
</script> 发布于 2012-11-12 16:08:21
看起来问题就在INSERT语句中,您应该使用准备好的语句参数转义:
INSERT INTO lcs_al_user_likes(user_id,liked_user_id,post_content,loop_id) values(?{etl.globals['posted_by']},?{etl.globals['liked_user_id']},?{etl.globals['message_text']},?batchLoopCounter); 顺便说一句,您原来的问题是引号破坏了insert语句,所以在本例中,您不需要使用替换(.)语法。完全起作用。
https://stackoverflow.com/questions/13346521
复制相似问题