运行 来自多个文件的 sqlplus 命令,在 Windows 批处理文件中带有查询日志记录或假脱机
Run sqlplus commands from multiple files with query logging or spool in Windows Batch File
我对批处理脚本很陌生,我正在尝试 运行 多个 sql 文件,而这些文件又可能包含来自 bat 的多个 sql DML/DDL 查询文件。输出文件必须包含所有正在执行的查询和查询输出。与 this example 不同,我的 sql 文件中没有假脱机命令,我无法编辑输入的 sql 文件。以下命令在 ksh 文件中对我有用(感谢此处文档):
$sqlplus /nolog <<! >>$sqlLogs.lst
connect $USERNAME/$PASSWORD@${DBNAME}
set echo on timing on
spool ${SCRIPTRUNFILE_SPOOL}
select name from v$database;
@${SCRIPTRUNFILE};
spool off
exit
!
我想要在 Windows bat 文件中完全相同。我已经尝试 using ^. I can't do combine all sql files into one,因为我需要将每个 sql 文件记录到不同的文件中。我对 bat 文件脚本的尝试如下,我玩了这么多,但失败了 spool command not recognized
。我还在下面的命令前加上 sqlplus
,但仍然无法实现类似上面的 ksh 文件:
sqlplus -s username/pwd@DBName >> sqlLogs.lst
set echo on timing on
spool %RUNFILENAME%.lst
@%RUNFILENAME% > %RUNFILENAME%.lst
select name from v$database;
spool off
quit
以下逻辑执行我的脚本但不记录正在执行的查询。另外,我不想两次连接到数据库。
echo select name from v$database; | sqlplus -s username/pwd@DBName >> sqlLogs.lst
echo quit | sqlplus -s username/pwd@DBName @%SCRIPTRUNFILE%>> %SCRIPTRUNFILE_SPOOL%.lst
这里有人可以帮我假脱机到一个文件,我也可以在其中记录查询,同时维护单个数据库连接吗?
通过标准输出将您的直接 SQL*Plus 命令传递给您的 sqlplus,按 Windows' (
和 )
符号分组...
(
echo.set echo on timing on
echo.spool %SCRIPTRUNFILE_SPOOL%
echo.select name from v$database;
echo.@%SCRIPTRUNFILE%
echo.spool off
echo.exit
) | sqlplus -s %USERNAME%/%PASSWORD%@%DBNAME% >> sqlLogs.lst
我对批处理脚本很陌生,我正在尝试 运行 多个 sql 文件,而这些文件又可能包含来自 bat 的多个 sql DML/DDL 查询文件。输出文件必须包含所有正在执行的查询和查询输出。与 this example 不同,我的 sql 文件中没有假脱机命令,我无法编辑输入的 sql 文件。以下命令在 ksh 文件中对我有用(感谢此处文档):
$sqlplus /nolog <<! >>$sqlLogs.lst
connect $USERNAME/$PASSWORD@${DBNAME}
set echo on timing on
spool ${SCRIPTRUNFILE_SPOOL}
select name from v$database;
@${SCRIPTRUNFILE};
spool off
exit
!
我想要在 Windows bat 文件中完全相同。我已经尝试 using ^. I can't do combine all sql files into one,因为我需要将每个 sql 文件记录到不同的文件中。我对 bat 文件脚本的尝试如下,我玩了这么多,但失败了 spool command not recognized
。我还在下面的命令前加上 sqlplus
,但仍然无法实现类似上面的 ksh 文件:
sqlplus -s username/pwd@DBName >> sqlLogs.lst
set echo on timing on
spool %RUNFILENAME%.lst
@%RUNFILENAME% > %RUNFILENAME%.lst
select name from v$database;
spool off
quit
以下逻辑执行我的脚本但不记录正在执行的查询。另外,我不想两次连接到数据库。
echo select name from v$database; | sqlplus -s username/pwd@DBName >> sqlLogs.lst
echo quit | sqlplus -s username/pwd@DBName @%SCRIPTRUNFILE%>> %SCRIPTRUNFILE_SPOOL%.lst
这里有人可以帮我假脱机到一个文件,我也可以在其中记录查询,同时维护单个数据库连接吗?
通过标准输出将您的直接 SQL*Plus 命令传递给您的 sqlplus,按 Windows' (
和 )
符号分组...
(
echo.set echo on timing on
echo.spool %SCRIPTRUNFILE_SPOOL%
echo.select name from v$database;
echo.@%SCRIPTRUNFILE%
echo.spool off
echo.exit
) | sqlplus -s %USERNAME%/%PASSWORD%@%DBNAME% >> sqlLogs.lst