我正在尝试使用下面所示的 sql 脚本来假脱机数据,创建一个没有数据的文件,在运行 select 语句时该文件有 3 行数据。
SPOOL "C:\Users\nmirza\Desktop\\YourFile.csv" REP
SELECT * FROM SATURN.SPRIDEN A1
WHERE
A1.SPRIDEN_PIDM = 3075205;
/
SPOOL OFF;
/
有人可以帮助我为什么我没有在 CSV 文件中获取任何数据吗?
SPOOL "C:\Users\nmirza\Desktop\\YourFile.csv" REP
SELECT * FROM SATURN.SPRIDEN A1
WHERE
A1.SPRIDEN_PIDM = 3075205;
/
SPOOL OFF;
/
该代码应该创建一个 CSV 文件。我没有你的桌子,但我在我的桌子上测试了它,或多或少字面地输入了你所做的事情:
SQL> spool "C:\temp\\yourfile.csv" REP
SQL> select * from dept;
DEPTNO DNAME LOC
---------- -------------- -------------
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIONS BOSTON
SQL> /
DEPTNO DNAME LOC
---------- -------------- -------------
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIONS BOSTON
SQL> spool off;
SQL> /
DEPTNO DNAME LOC
---------- -------------- -------------
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIONS BOSTON
type
命令列出文件的内容:
SQL> $type "C:\temp\\yourfile.csv"
这就是结果 - 正如你所看到的,一切都在这里:
SQL> select * from dept;
DEPTNO DNAME LOC
---------- -------------- -------------
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIONS BOSTON
SQL> /
DEPTNO DNAME LOC
---------- -------------- -------------
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIONS BOSTON
SQL> spool off;
SQL>
如果您想知道为什么 SQLPlus 中有三份数据(并且在 CSV 文件中也有重复),那是因为您误用了斜杠。在 SQLPlus 中,它的意思是“重新执行最后一条语句”,这 - 应用于您的代码 - 执行以下操作:
SELECT * FROM SATURN.SPRIDEN A1
WHERE
A1.SPRIDEN_PIDM = 3075205; --> semi-colon terminates statement and executes it
/ --> this slash re-executes previous SELECT
SPOOL OFF;
/ --> this re-executes it again (but it
未包含在 CSV 文件中,因为
spool off
)
为什么您在 CSV 文件中看不到任何内容?我不知道。您用
PLSQL
标签标记了问题,但这几乎不是真的。 spool
适用于 SQL*Plus,与 PL/SQL 无关。我删除了该标签并添加了另一个似乎更合适的标签。
因此,您能解释一下您到底做了什么吗?您使用哪种工具?如果您认为这可以帮助我们帮助您,请发布屏幕截图。