在Coldfusion中使用sqlldr将数据插入数据库

时间:2019-06-07 14:35:08

标签: linux csv coldfusion sql-loader

我有一个从网站获取的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;没有用于product = RDBMS的消息文件,   工具=未找到ULMessage 2100;没有用于product = RDBMS的消息文件,   facility = UL

1 个答案:

答案 0 :(得分:2)

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

  • timeout-以期望的秒数顺序进行
  • variable-存放sqlldr的STDOUT输出的变量的名称
  • errorVariable-保留sqlldr的STDERR输出的变量的名称

执行完此操作后,您可以获取调用的输出并检查是否有任何错误消息和其他信息。

添加超时是至关重要的步骤-这使cfexecute处于阻塞状态,直到程序终止或达到超时为止。没有超时,ColdFusion只会启动该过程,并立即继续执行当前页面的其余部分。