有什么方法可以使用 Python 的 cx_Oracle、SQL 客户端来使用 SPOOL SQLPLUS 命令?
Any way to use SPOOL SQLPLUS command using cx_Oracle, SQL client of Python?
我正在尝试使用 cx_Oracle 执行 SQL 脚本,大致看起来像
SPOOL /tmp/test.log
SET echo ON
SET serveroutput ON SIZE UNLIMITED
BEGIN
#SOME_PL/SQL_STATEMENTS
END;
/
SPOOL OFF
我在哪里尝试将 PL/SQL 语句的结果写入文件。我了解到 SQLPlus 命令在 cx_Oracle 中不受支持。有什么方法可以使用 SPOOL 使用 cx_Oracle?
在 cx_Oracle.
中没有直接使用 SPOOL
的方法
问题是 SPOOL
是 SQL*PLUS 特定命令。它不是 Oracle SQL 命令。因此,实际的假脱机是在客户端处理的。当你做类似
的事情时
SPOOL ON
SET PAGESIZE 0
SET SERVEROUTPUT ON
COLUMN username FORMAT A20
所有命令都是 SQL*PLUS 命令,一个本地(客户端)命令,它们不会被发送到 Oracle 服务器,也不会改变行为完全没有 Oracle 会话。
这些命令仅用于操纵 Oracle 服务器的输出在屏幕上的显示方式(或在 SPOOL 的情况下写入文件或打印机)。
您可以通过不必以分号结尾 ;
(在大多数情况下)来识别本地命令。
可在此处找到 SQL*PLUS 命令的完整参考:https://docs.oracle.com/database/121/SQPUG/ch_twelve001.htm#SQPUG023
我正在尝试使用 cx_Oracle 执行 SQL 脚本,大致看起来像
SPOOL /tmp/test.log
SET echo ON
SET serveroutput ON SIZE UNLIMITED
BEGIN
#SOME_PL/SQL_STATEMENTS
END;
/
SPOOL OFF
我在哪里尝试将 PL/SQL 语句的结果写入文件。我了解到 SQLPlus 命令在 cx_Oracle 中不受支持。有什么方法可以使用 SPOOL 使用 cx_Oracle?
在 cx_Oracle.
中没有直接使用SPOOL
的方法
问题是 SPOOL
是 SQL*PLUS 特定命令。它不是 Oracle SQL 命令。因此,实际的假脱机是在客户端处理的。当你做类似
SPOOL ON
SET PAGESIZE 0
SET SERVEROUTPUT ON
COLUMN username FORMAT A20
所有命令都是 SQL*PLUS 命令,一个本地(客户端)命令,它们不会被发送到 Oracle 服务器,也不会改变行为完全没有 Oracle 会话。
这些命令仅用于操纵 Oracle 服务器的输出在屏幕上的显示方式(或在 SPOOL 的情况下写入文件或打印机)。
您可以通过不必以分号结尾 ;
(在大多数情况下)来识别本地命令。
可在此处找到 SQL*PLUS 命令的完整参考:https://docs.oracle.com/database/121/SQPUG/ch_twelve001.htm#SQPUG023