【发布时间】:2020-10-26 14:35:51
【问题描述】:
我正在编写一个脚本,它将根据表名生成 SQLLoader 文件。到目前为止,我已经设法做到了,但是当我在 SQLPlus 中运行 sql 脚本时,我得到的输出与在开发人员中不同。准确地说,当它们未被调用时会插入新行。我做错了什么?
以下代码只是开始,没有其他代码。当包含列时,我会得到非常混乱的输出,到处都有多个换行符。
注意:我需要它通过 SQLPlus 运行,因为我打算将代码合并到 Shell 脚本中。
SET SERVEROUTPUT ON
DECLARE
lv_ctl VARCHAR2(32767);
lv_tableName VARCHAR2(10) := 'MyTable';
BEGIN
lv_ctl := 'OPTIONS(SKIP=1)' || CHR(10)
|| 'LOAD DATA' || CHR(10)
|| 'APPEND' || CHR(10)
|| 'INTO TABLE ' || lv_tableName || CHR(10)
|| 'FIELDS TERMINATED BY ","' || CHR(10)
|| 'TRAILING NULLCOLS' || CHR(10)
|| '(' || CHR(10)
;
dbms_output.put_line(lv_ctl);
END;
/
SET SERVEROUTPUT OFF
当通过 developer 运行时,我得到(这是我想要的输出):
OPTIONS(SKIP=1)
LOAD DATA
APPEND
INTO TABLE MyTable
FIELDS TERMINATED BY ","
TRAILING NULLCOLS
(
通过 SQLPlus 运行时:
OPTIONS(SKIP=1)
LOAD DATA
APPEND
INTO TABLE MyTable
FIELDS TERMINATED BY
","
TRAILING NULLCOLS
(
问题是我随机换行,找不到背后的原因。如您所见,第五行 (FIELDS TERMINATED BY ",") 不是内联的。
【问题讨论】:
-
如果两个脚本给你相同的结果,它们不完全一样重要吗?
-
该行是否有可能在 sqlplus 中换行?如果在运行脚本之前“设置 LINESIZE 100”会发生什么?
-
@pmdba 成功了。请把它作为答案,非常感谢!
标签: oracle sqlplus sql-loader