AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / dba / 问题 / 252321
Accepted
Darrell
Darrell
Asked: 2019-11-01 07:39:20 +0800 CST2019-11-01 07:39:20 +0800 CST 2019-11-01 07:39:20 +0800 CST

将 SQL 查询输出导出到调度程序作业中的文件

  • 772

我需要将数据导出到调度程序作业中的 csv 文件。以下是命令:

SPOOL "\\AServerName\Output\RMS_DataFileSizes.csv" REPLACE;
SELECT /*csv*/
  TO_CHAR(SYSDATE,'YYYY-MM-DD HH24:MI:SS') AS "CurrentDTM",
  df.tablespace_name AS "Tablespace Name",
  SUBSTR(df.file_name,INSTR(df.file_name,'RMS_'),20) AS "File Name",
  Round(df.bytes/1073741824,2) AS "Size (GB)",
  decode(e.used_bytes,NULL,0,Round(e.used_bytes/1073741824,2)) AS "Used (GB)",
  decode(f.free_bytes,NULL,0,Round(f.free_bytes/1073741824,2)) AS "Free (GB)",
  decode(e.used_bytes,NULL,0,Round((e.used_bytes/df.bytes)*100,1)) AS "% Used"
FROM DBA_DATA_FILES DF,
     (SELECT file_id,sum(bytes) used_bytes FROM dba_extents GROUP by file_id) E,
     (SELECT sum(bytes) free_bytes,file_id FROM dba_free_space GROUP BY file_id) f
WHERE e.file_id (+) = df.file_id
  AND df.file_id  = f.file_id (+)
  AND df.tablespace_name = 'RMS_DATA'
ORDER BY df.tablespace_name,df.file_name;
SPOOL OFF;

当我将“作业类型”设为“PL/SQL 块”时,它会失败并且出现以下错误:

"ORA-06550: line 1, column 764:
PLS-00103: Encountered the symbol "\\AServerName\Output\RMS_DataFileSizes.csv" when expecting one of the following:

   := . ( @ % ;
ORA-06550: line 17, column 7:
PLS-00103: Encountered the symbol "OFF" when expecting one of the following:

   := . ( @ % ;
The symbol ":=" was substituted for "OFF" to continue.

我究竟做错了什么?

oracle oracle-12c
  • 2 2 个回答
  • 1950 Views

2 个回答

  • Voted
  1. Littlefoot
    2019-11-01T12:26:05+08:002019-11-01T12:26:05+08:00

    稍微不同的方法怎么样?

    将该代码放入 .SQL 文件中,我们称之为p.sql:

    spool p.txt
    
    SELECT /*csv*/
      TO_CHAR(SYSDATE,'YYYY-MM-DD HH24:MI:SS') AS "CurrentDTM",
      df.tablespace_name AS "Tablespace Name",
      SUBSTR(df.file_name,INSTR(df.file_name,'RMS_'),20) AS "File Name",
      Round(df.bytes/1073741824,2) AS "Size (GB)",
      decode(e.used_bytes,NULL,0,Round(e.used_bytes/1073741824,2)) AS "Used (GB)",
      decode(f.free_bytes,NULL,0,Round(f.free_bytes/1073741824,2)) AS "Free (GB)",
      decode(e.used_bytes,NULL,0,Round((e.used_bytes/df.bytes)*100,1)) AS "% Used"
    FROM DBA_DATA_FILES DF,
         (SELECT file_id,sum(bytes) used_bytes FROM dba_extents GROUP by file_id) E,
         (SELECT sum(bytes) free_bytes,file_id FROM dba_free_space GROUP BY file_id) f
    WHERE e.file_id (+) = df.file_id
      AND df.file_id  = f.file_id (+)
      AND df.tablespace_name = 'RMS_DATA'
    ORDER BY df.tablespace_name,df.file_name;
    
    spool off
    exit
    

    我在 MS Windows 上,所以 - 创建一个 .BAT 文件;让我们称之为p.bat:

    sqlplus sys/pwd as sysdba @p.sql
    

    最后,使用您的操作系统调度程序(我的 Windows 上的任务管理器)并安排p.bat尽可能多地运行,例如

    • 让它在每天 22:00 运行
    • action = 启动一个程序(导航到p.bat)
    • 可选(我建议你使用它),设置“开始”目录

    应该管用; 至少,对我有用。

    • 0
  2. Best Answer
    Balazs Papp
    2019-11-02T04:09:45+08:002019-11-02T04:09:45+08:00

    这不是你这样做的方式。PLSQL_BLOCK打字作业不接受此类命令。使用SQL_SCRIPT类型作业。例子:

    begin
      dbms_credential.create_credential(
        credential_name => 'oracle_user',
        username        => 'oracle',
        password        => 'Oracle123'
      );
    end;
    /
    
    begin
      dbms_scheduler.create_job(
        job_name        => 'my_script_job',
        job_type        => 'sql_script',
        job_action      => 'conn bp/bp
    set markup csv on
    spool "/home/oracle/output.txt"
    select tablespace_name, file_id, bytes/1024/1024 as size_mb from dba_data_files;
    spool off',
        credential_name => 'oracle_user',
        enabled         => true,
        auto_drop       => false
      );
    end;
    /
    
    $ cat /home/oracle/output.txt
    SQL> select tablespace_name, file_id, bytes/1024/1024 as size_mb from dba_data_files;
    
    "TABLESPACE_NAME","FILE_ID","SIZE_MB"
    "SYSTEM",1,700
    "SYSAUX",2,870
    "UNDOTBS1",3,295
    "USERS",4,112.5
    "TEST",5,100
    

    请记住,SET MARKUP CSV ON是 12.2 的功能。它不适用于 12.1。 /*csv*/是 SQL Developer 的一项功能,它也不起作用。

    • 0

相关问题

  • Oracle 中的数据库备份 - 导出数据库还是使用其他工具?

  • ORDER BY 使用文本列的自定义优先级

  • 舒服的sqlplus界面?[关闭]

  • 如何在数据库中找到最新的 SQL 语句?

  • 如何使用正则表达式查询名称?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目

    • 12 个回答
  • Marko Smith

    如何让sqlplus的输出出现在一行中?

    • 3 个回答
  • Marko Smith

    选择具有最大日期或最晚日期的日期

    • 3 个回答
  • Marko Smith

    如何列出 PostgreSQL 中的所有模式?

    • 4 个回答
  • Marko Smith

    列出指定表的所有列

    • 5 个回答
  • Marko Smith

    如何在不修改我自己的 tnsnames.ora 的情况下使用 sqlplus 连接到位于另一台主机上的 Oracle 数据库

    • 4 个回答
  • Marko Smith

    你如何mysqldump特定的表?

    • 4 个回答
  • Marko Smith

    使用 psql 列出数据库权限

    • 10 个回答
  • Marko Smith

    如何从 PostgreSQL 中的选择查询中将值插入表中?

    • 4 个回答
  • Marko Smith

    如何使用 psql 列出所有数据库和表?

    • 7 个回答
  • Martin Hope
    Jin 连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane 如何列出 PostgreSQL 中的所有模式? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh 为什么事务日志不断增长或空间不足? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland 列出指定表的所有列 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney MySQL 能否合理地对数十亿行执行查询? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx 如何监控大型 .sql 文件的导入进度? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison 你如何mysqldump特定的表? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 对 SQL 查询进行计时? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas 如何从 PostgreSQL 中的选择查询中将值插入表中? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 列出所有数据库和表? 2011-02-18 00:45:49 +0800 CST

热门标签

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve