首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何自动化Oracle SQL Developer每天一次将查询导出到csv/xlsx

问如何自动化Oracle SQL Developer每天一次将查询导出到csv/xlsx
EN

Stack Overflow用户
提问于 2022-06-28 15:08:46
回答 1查看 363关注 0票数 0

我对SQL相当陌生,我的团队负责运行需要SQL数据的每日报告。是否有办法每天使用Oracle SQL Developer自动将查询导出到csv/excel?

EN

回答 1

Stack Overflow用户

发布于 2022-06-28 16:27:02

本身不会将其自动化,但是有很多选项可以完成。

基本上,有些计算机需要有一个调度程序,可以唤醒它并完成工作。有些人为此使用自己的计算机,使用windows计划的任务、cron作业或第三方程序。

但是,您的计算机将运行哪些“任务”?任务基本上是连接到数据库,进行身份验证,发送查询文本,检索内存中的结果,然后将其导出为文件。很多人会为此使用python,因为它可以处理所有这些步骤。

你会注意到,我们已经有两个外部的“事情”可能会失败。(1)您的计算机,(2)您的python代码。

一个更简单的选择是oracle数据库本身。它是否总是运行在远程服务器上?如果是这样的话,你可以利用这一点,让它来做所有的工作。

您正在研究几个步骤,但我认为它们更容易(不过,您可能需要从管理员那里获得权限)。

指定文件位置-记住,这是在服务器上,而不是您的计算机上。

代码语言:javascript
复制
create or replace directory csv_dir as '/destination/for/results';

创建一个存储过程-类似于您的SQL逻辑的容器。

代码语言:javascript
复制
create or replace procedure write_file is
  file_handle UTL_FILE.file_type;
begin
  file_handle := utl_file.fopen('CSV_DIR', 'csv_filename.csv', 'w', 32767);
  for rws in (
    select * from t -- your query here
  ) loop
    utl_file.put_line(file_handle, 
      rws.c1 || ',' || rws.c2 || ',' || rws.c3 -- your columns here
    );
  end loop;
  utl_file.fclose(file_handle);
end write_file;

创建调度程序作业-运行存储过程。这是Oracle服务器的一个特性。

代码语言:javascript
复制
BEGIN
  DBMS_SCHEDULER.CREATE_JOB (
    job_name => 'EXPORT_CSV_J',
    job_type => 'PLSQL_BLOCK',
    job_action => 'begin write_file; end;',
    number_of_arguments => 0,
    start_date => NULL,
    repeat_interval => 'FREQ=DAILY',
    end_date => NULL,
    enabled => FALSE,
    auto_drop => FALSE);

  DBMS_SCHEDULER.SET_ATTRIBUTE( 
    name => 'EXPORT_CSV_J', 
    attribute => 'logging_level', 
    value => DBMS_SCHEDULER.LOGGING_RUNS);
  
  DBMS_SCHEDULER.enable(
    name => 'EXPORT_CSV_J');
END;

我从本网站那里借用了这段代码,因为我已经有一段时间没有这么做了。

如果由于某种原因,您的数据库实际上不是Oracle (我知道有些人使用Oracle SQL Developer,尽管他们的实际数据库有所不同),那么这些步骤将是相似的,但代码会有所不同。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72788963

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档