将数据假脱机到 CSV 文件时出现问题

问题描述 投票:0回答:1

我正在尝试使用下面所示的 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;

/

sql oracle sqlplus spool
1个回答
0
投票

该代码应该创建一个 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 无关。我删除了该标签并添加了另一个似乎更合适的标签。

因此,您能解释一下您到底做了什么吗?您使用哪种工具?如果您认为这可以帮助我们帮助您,请发布屏幕截图。

© www.soinside.com 2019 - 2024. All rights reserved.