Python n意外标记“;“报表结束”;发现如下所述:;创建;

Python n意外标记“;“报表结束”;发现如下所述:;创建;,python,sql,jenkins,db2,Python,Sql,Jenkins,Db2,您好,我有一个很长的sql查询,正在使用python执行对DB2的查询,我正在jenkins作业中将查询作为字符串参数传递 我得到的信息如下: connectToServer(sys.argv[1], sys.argv[2], sys.argv[3], sys.argv[4]) File "mavisdb2scripts.py", line 10, in connectToServer stmt = ibm_db.exec_immediate(conn,

您好,我有一个很长的sql查询,正在使用python执行对DB2的查询,我正在jenkins作业中将查询作为字符串参数传递

我得到的信息如下:

       connectToServer(sys.argv[1], sys.argv[2], sys.argv[3], sys.argv[4])
       File "mavisdb2scripts.py", line 10, in connectToServer
       stmt = ibm_db.exec_immediate(conn, sqlquery)
       Exception: [IBM][CLI Driver][DB2/AIX64] SQL0104N  An unexpected token "END-OF-STATEMENT"     was found following "CREATE".  Expected tokens may include:  "JOIN <joined_table>".
           SQLSTATE=42601 SQLCODE=-104
connectToServer(sys.argv[1]、sys.argv[2]、sys.argv[3]、sys.argv[4])
connectToServer中第10行的文件“mavisdb2scripts.py”
stmt=ibm\u db.exec\u immediate(conn,sqlquery)
异常:[IBM][CLI Driver][DB2/AIX64]SQL0104N在“CREATE”之后发现意外标记“END-OF-STATEMENT”。预期标记可能包括:“加入”。
SQLSTATE=42601 SQLCODE=-104
sys.argv[4]是sql查询。。。如何使用第一个字符串而不是整个字符串查询。。。我试着直接在代码上传递它,它工作得很好,还试着使用qoutes/double

生成步骤“执行shell”将生成标记为失败
完成:失败

听起来,它没有拾取多行。所以,通过删除所有行末尾的返回代码,尝试只在一行中编写SQL。 如果仍要使用多行,请尝试在所有行的末尾添加反斜杠符号“\”


希望这能有所帮助。

Db2接收的SQL在某种程度上是错误的,但您没有显示SQL。如果它来自命令行,那么引用和特殊字符通常是原因。调试代码,在将SQL发送到Db2之前准确地显示它(这与您在命令行中看到的情况不同)。