0

我正在尝试在命令行中使用 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
4

1 回答 1

0

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

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

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

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

于 2021-06-17T07:52:24.333 回答