您好我正在尝试在我的.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
我知道文件位置正确吗?
为什么要这样做?
答案 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