Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oracle 创建要在导出CSV的计划上运行的作业_Oracle_Jobs - Fatal编程技术网

Oracle 创建要在导出CSV的计划上运行的作业

Oracle 创建要在导出CSV的计划上运行的作业,oracle,jobs,Oracle,Jobs,我对oracle db真的很陌生,有谁能帮助我或建议我该怎么做,我需要每天生成一个csv文件,我已经创建了这样一个脚本,但不知道如何使用此脚本创建作业 SET markup csv on SET VERIFY OFF set feedback off set termout off set echo off Column ReportDate New_Value XRptDate Select To_char(sysdate-1,'yyyymmdd') ReportDat From Dual;

我对oracle db真的很陌生,有谁能帮助我或建议我该怎么做,我需要每天生成一个csv文件,我已经创建了这样一个脚本,但不知道如何使用此脚本创建作业

SET markup csv on
SET VERIFY OFF
set feedback off
set termout off
set echo off
Column ReportDate New_Value XRptDate
Select To_char(sysdate-1,'yyyymmdd') ReportDat From Dual;

Spool D:\test\REPORTSYS_HDR_&xRptDate..csv
SELECT * FROM REPORTSYS_HDR_VW;
Spool Off

您可以在有关软件包的文档中阅读有关创建作业的信息。您需要阅读有关过程DBMS_SCHEDULER.CREATE_JOB的内容,我认为您可以在那里找到所需的内容。

您可以在有关包的文档中阅读有关创建JOB的内容。您需要阅读有关过程DBMS_调度程序的内容。创建_作业,我想您可以在那里找到所需的内容。

您可能希望使用的一个选项是DBMS_调度程序。如果您使用的是12c以后的版本,则可能会使用新选项EXTERNAL_SCRIPT。您还可以选择创建SQL_脚本类型的作业

让我向您展示一个外部脚本的示例

我有两个假设,因为你没有明确说明

  • 您的数据库正在Windows上运行
  • 您可以通过具有在DBMS_调度程序和DBMS_凭据中创建或管理对象所需权限的用户访问数据库
**

创建外部作业的步骤 **

1.为操作系统创建凭据

begin
DBMS_CREDENTIAL.create_credential(
    credential_name => 'NAME_WIN_CREDENTIAL',
    username        => 'youruser',
    password        => 'password',
    windows_domain  => 'yourwindowsdomain');
end;
/
2.创建作业以使用类型为EXTERNAL_SCRIPT的凭据

declare
v_job     varchar2(80) := 'YOUR_JOB_NAME';
v_counter pls_integer;
BEGIN
  select count(*) into v_counter from dba_scheduler_jobs where job_name = v_job;
  if v_counter > 0 
  then 
      dbms_scheduler.drop_job ( job_name => v_job , force => true );
  end if;
  DBMS_SCHEDULER.create_job
  (
    job_name             => v_job,
    job_type             => 'EXTERNAL_SCRIPT',
    job_action           => 'D:\test\REPORTSYS_HDR.cmd',
    credential_name      => 'NAME_WIN_CREDENTIAL',
    start_date           => '24-JUL-20 08.15.00 AM Europe/Warsaw',
    repeat_interval      => 'FREQ=DAILY;' -- change the frequency to your needs,
    enabled              =>  TRUE,
    auto_drop            =>  FALSE -- avoid the job to be dropped after finish 
  );
END;
/
3.将SQL脚本包含到名为D:\test\REPORTSYS\u HDR.cmd的新cmd程序中,该程序可由新作业触发

%ORACLE_HOME%\bin\sqlplus -S youruser/yourpassword@yourtns @D:\test\REPORTSYS_HDR.sql

您可能希望使用的一个选项是DBMS\u调度程序。如果您使用的是12c以后的版本,则可能会使用新选项EXTERNAL_SCRIPT。您还可以选择创建SQL_脚本类型的作业

让我向您展示一个外部脚本的示例

我有两个假设,因为你没有明确说明

  • 您的数据库正在Windows上运行
  • 您可以通过具有在DBMS_调度程序和DBMS_凭据中创建或管理对象所需权限的用户访问数据库
**

创建外部作业的步骤 **

1.为操作系统创建凭据

begin
DBMS_CREDENTIAL.create_credential(
    credential_name => 'NAME_WIN_CREDENTIAL',
    username        => 'youruser',
    password        => 'password',
    windows_domain  => 'yourwindowsdomain');
end;
/
2.创建作业以使用类型为EXTERNAL_SCRIPT的凭据

declare
v_job     varchar2(80) := 'YOUR_JOB_NAME';
v_counter pls_integer;
BEGIN
  select count(*) into v_counter from dba_scheduler_jobs where job_name = v_job;
  if v_counter > 0 
  then 
      dbms_scheduler.drop_job ( job_name => v_job , force => true );
  end if;
  DBMS_SCHEDULER.create_job
  (
    job_name             => v_job,
    job_type             => 'EXTERNAL_SCRIPT',
    job_action           => 'D:\test\REPORTSYS_HDR.cmd',
    credential_name      => 'NAME_WIN_CREDENTIAL',
    start_date           => '24-JUL-20 08.15.00 AM Europe/Warsaw',
    repeat_interval      => 'FREQ=DAILY;' -- change the frequency to your needs,
    enabled              =>  TRUE,
    auto_drop            =>  FALSE -- avoid the job to be dropped after finish 
  );
END;
/
3.将SQL脚本包含到名为D:\test\REPORTSYS\u HDR.cmd的新cmd程序中,该程序可由新作业触发

%ORACLE_HOME%\bin\sqlplus -S youruser/yourpassword@yourtns @D:\test\REPORTSYS_HDR.sql

一个非常好的选择是使用Oracle data sync,它将帮助您在数据库中上载csv文件,并帮助安排作业。一个非常好的选择是使用Oracle data sync,它将帮助您在数据库中上载csv文件,并帮助安排作业。这是一个很好的示例。数据库作业从其本地D:\test路径调用脚本-对吗?如果不可能,那么运行cmd的简单Windows调度程序作业可能是一种替代方法。它不需要访问DB服务器文件系统。@oratom,有几种选择。我试图在oracle中为oracle脚本提供一个解决方案。也许我有偏见,因为我一直在使用DBMS_调度程序的API构建日历,运行外部_脚本和SQL_脚本作业类型。因此,我可以用依赖项和步骤构建链,以便在没有任何第三方软件的情况下运行外部程序:)这是一个很好的例子。数据库作业从其本地D:\test路径调用脚本-对吗?如果不可能,那么运行cmd的简单Windows调度程序作业可能是一种替代方法。它不需要访问DB服务器文件系统。@oratom,有几种选择。我试图在oracle中为oracle脚本提供一个解决方案。也许我有偏见,因为我一直在使用DBMS_调度程序的API构建日历,运行外部_脚本和SQL_脚本作业类型。因此,我可以构建带有依赖项和步骤的链,以便在没有任何第三方软件的情况下运行外部程序:)