【发布时间】:2011-08-13 06:51:10
【问题描述】:
所以我有这个具有这种内容的假脱机文件。
SQL> select file_name from dev_files;
FILE_NAME
------------------------------------------------------------------
file1.txt
file2.doc
file3.pdf
total.xls
4 rows selected.
SQL> spool off
我正在编写一个 ksh 脚本来将这些文件加载到 ftp 服务器并更新日志文件。我被卡住了。这是我多次尝试后糟糕的代码部分。
dump="spoolfile.txt"
while read line;
do
if [[`expr match "$line" 'SQL'` !=3]] && [[`expr match "$line" 'FILE_NAME'` !=9]] && [[`expr match "$line" '---------'` !=9]]
then
ftp -inv $tgt_server <<EOT
quote user $uname
quote password $pword
mput $src_path/$line
quit
EOT
echo "sent $line" >> sent_files.log
fi
done < $dump
我如何确保“没有选择行”并说“选择了 4 行”。没读过?可以有任何数字而不是 4 对应于文件的数量。在没有文件的情况下,假脱机文件看起来像这样。这 '。'也不见了。
SQL> select file_name from dev_files;
no rows selected
SQL> spool off
【问题讨论】:
-
您是否可以控制生成 spoolfile.txt 的 SQL*Plus 脚本?如果是这样,您可以事先过滤掉这些行。
-
是的,我想到了。但似乎另一个日志文件需要输出。
-
嗯,这将是最简单的,您可以在之后添加所需的日志记录:set heading off set feedback off set pagesize 0 set echo off
-
这些假脱机文件是在别处生成的,所以我可能无法更改它们。有更好的解决方案吗?我已经邮寄了可以访问这些脚本的人。但最坏的情况呢?