在SQLLDR的批处理脚本中使用变量

时间:2014-02-06 13:12:53

标签: sql database oracle batch-file

您好我正在尝试在我的.bat文件中设置一个变量,我想在sqlldr代码中使用该变量来声明该文件(infile)

这就是我在bat文件中的变量:

set directroy_name= D:\Folder\Folder\Folder\File.csv

然后在我的命令文件中我有

load data
infile '%directory_name%'

当我尝试从命令提示符运行.bat文件时,我只收到SQL_Loader_500:无法打开文件(%directory_name%.dat

我知道文件位置正确吗?

为什么要这样做?

1 个答案:

答案 0 :(得分:1)

不,你不能这样做 - 你期望Oracle可执行文件能够理解Windows环境变量语法。如果它这样做,则必须在Unix等处理$变量

您只需在命令行中传递文件名即可。在您的控制文件中完全省略INFILE,然后当您调用SQL * Loader时添加一个DATA command-line argument

sqlldr user/password CONTROL=your.ctl DATA=%directory_name% ...

假设您的变量名称奇怪,并且显示了您显示的完整文件路径。

如果它存在,INFILE argument will be overridden by the command-line argument,所以如果你愿意,你可以包括一个默认的固定值。

你似乎也有拼写错误;您设置directroy_name,然后使用directory_name,它将没有任何价值。您需要将其更改为:

set directory_name= D:\Folder\Folder\Folder\File.csv