DB21007E读取命令错误时到达文件结尾



我正试图在命令行中使用db2执行下面的sql文件。但是我得到了以下错误。我不确定哪里出了问题。

"DB21007E在读取命令"0"时到达文件结尾;

我正在使用db2-tvf-sqlfile执行下面的sql文件

connect to ****** user ***** using ******
export to "D:Vikas.csv" OF DEL MESSAGES
select
T1.ROW_NUM,
T5.DETAIL_TYPE_CD,
T1.ADMIN_FEES_TICKET,
T1.ADMINISTRATIVE_FEES,
T1.BASE_RENT,
T1.CITATIONS,
T1.COLLECTION_REPO_FEES,
T1.DESC,
T1.EFFECTIVE_DATE,
T1.LATE_CHARGE,
T1.MISC_FEE,
T2.STATUS_CD,
T4.ROW_ID,
T3.ROW_ID,
T2.BUILD,
T1.REVERSE_FLG,
T1.NSF_FLG,
T2.PR_CON_ID,
T1.PROC_DATE,
T1.PROPERTY_TAX,
T1.REGISTRATION_FEES,
T1.REPAIR_FEES,
T1.SALES_TAX,
T1.TERMINATION_FEES,
T1.TOTAL_TRANS,
T1.TRANSACTION_TYPE
FROM
SIEBEL.LSE_INPHIST_VIEW T1
LEFT OUTER JOIN SIEBEL.S_ASSET T2 ON T1.ACCOUNT_NUM = T2.ASSET_NUM
LEFT OUTER JOIN SIEBEL.S_ASSET_CON T3 ON T2.ROW_ID = T3.ASSET_ID AND
T3.RELATION_TYPE_CD = 'Obligor'
LEFT OUTER JOIN SIEBEL.S_ASSETCON_ADDR T4 ON T3.ROW_ID = T4.ASSET_CON_ID 
AND T4.USE_TYPE_CD = 
'Bill To'
LEFT OUTER JOIN SIEBEL.S_PROD_INT T5 ON T2.PROD_ID = T5.ROW_ID
WHERE
(T1.ACNT_ID = '01003501435')
ORDER BY
T1.ACNT_ID DESC,T1.PROC_DATE DESC WITH UR

现在我可以连接DB2了,但在执行select语句时,它抛出了以下错误

SQL0104N  An unexpected token "T1.ROW_NUM" was found following "SELECT".
Expected tokens may include:  "SELECT".  SQLSTATE=42601

原始问题文本出现症状"quot;DB21007E在读取命令"0"时到达文件结尾&";。

这是由于未能使用分隔符终止每条语句造成的。SQL语句的默认分隔符是分号(;(。您可以自由使用不同的分隔符,在这种情况下,您必须在命令行或sqlfile本身内部提供额外的配置信息来指定新的分隔符。

使用Db2命令行处理器与db2 -tvf sqlfile一起提交的sqlfile中的每条语句都必须有效。如果任何一条语句的语法不正确,那么默认情况下,Db2将返回一个错误,并继续执行文件中的下一条语句。如果希望Db2在出现第一个错误时停止执行并退出sqlfile,请使用+s命令行选项。

对于任何其他症状,与DB21007E End of file reached while reading the command不同,您应该单独提出一个新的不同问题。在将查询放入脚本文件之前,请始终独立验证查询,例如,在您最喜欢的GUI工具中运行SELECT...,并在将工作查询放入SQL文件进行脚本编写之前修复错误。对于export命令,您使用的是MESSAGES选项,但忘记指定包含这些消息的文件名。请参阅文档。

最新更新