我正试图在命令行中使用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
选项,但忘记指定包含这些消息的文件名。请参阅文档。