-1

我有一个从网站获得的 CSV 文件。我需要使用 ColdFusion 中的 SQLLDR 将相同的 CSV 文件上传到我的数据库中。由于某种原因,我无法将数据插入数据库。

下面是我的代码。使用此代码,我无法将数据从 CSV 文件插入数据库。它是批处理文件中的工作文件,但使用 cfexecute 无法正常工作。我的意思是,我得到一个空白屏幕。没有错误,没有例外,什么都没有。检查了日志,但我也没有收到任何错误。我唯一能看到的是数据没有插入到数据库中。

仅供参考,我们使用的是 Linux 环境,所以路径略有不同。

<cfset CTLPATH="/home/mosuser/apps/nodal/ctl">
<cfset LOGPATH="/home/mosuser/apps/nodal/logs">

<cfexecute name="/opt/oracle/product/12.1.0/client_1/bin/sqlldr" 
    arguments="userid/password@Sid control=#CTLPATH#/mpimReport.ctl 
    log=#LOGPATH#/#PathfileName#_load.log data=#filelist##PathfileName#.csv 
    bad=#LOGPATH#/#PathfileName#_error.txt">
</cfexecute>

更新:

如建议的那样,转储错误变量qryerr显示:

未找到消息 2100;没有产品=RDBMS 的消息文件,设施=ULMessage 2100 未找到;没有产品消息文件=RDBMS,设施=UL

4

1 回答 1

2

<cfexecute>为您的调用添加一些参数。

  • timeout- 以秒数的顺序预计该过程将花费
  • variable- 保存 sqlldr 的 STDOUT 输出的变量的名称
  • errorVariable- 保存 sqlldr 的 STDERR 输出的变量的名称

之后,您可以获得调用的输出并检查它是否有任何错误消息和其他信息。

添加超时是关键步骤 - 这会cfexecute阻塞直到程序终止或达到超时。在没有超时的情况下,ColdFusion 会简单地启动进程并立即继续执行当前页面的其余部分。

于 2019-06-07T14:53:04.997 回答