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

DB21007E End of file reached while reading the command error

我正在尝试在命令行中使用 db2 执行以下 sql 文件。但我收到以下错误。我不确定哪里出错了。

“DB21007E 读取命令时到达文件末尾”

我正在使用 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

原始问题文本的症状是“DB21007E 读取命令时到达文件末尾”。

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

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

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