在shell脚本中运行sqlldr

时间:2017-06-02 09:58:15

标签: sql shell unix

您好我正在编写一个小的shell脚本,它将从DB中的.ctl文件加载数据,但是在执行脚本后不应该在屏幕上显示输出,因为它很关键,只是想要确认这是否正确:

#!/bin/ksh

Y=`sqlldr usr/passwd@DB control = /work/ctlm/SCRIPTS/upload.ctl`
echo $Y > sqlldr_1
rm -rf sqlldr_1

1 个答案:

答案 0 :(得分:2)

在shell中,空格用于分隔参数,在=周围删除它们。 还可以使用变量$ Y周围的引号来保持格式(空格,换行符)。

#!/bin/ksh

Y=`sqlldr usr/passwd@DB control=/work/ctlm/SCRIPTS/upload.ctl`
echo "$Y" > sqlldr_1
rm -rf sqlldr_1

如果您不想要任何输出屏幕,请使用重定向

例如,删除输出

sqlldr usr/passwd@DB control=/work/ctlm/SCRIPTS/upload.ctl >/dev/null 2>&1

创建2个文件out.log和err.log

sqlldr usr/passwd@DB control=/work/ctlm/SCRIPTS/upload.ctl >out.log 2>err.log

fd 1是隐含的,>out.log1>out.log相同 可以在>和文件名之间添加空格, 但文件描述符与>

之间不能有空格