Если вы знаете, как обнаружить «только измененные данные» - я полагаю, у вас должен быть какой-то столбец «отметки времени» - тогда это будет
select columns
from your_table
where timestamp_column >= sysdate - 20/(24*60);
из-за этого: 20 минут / (24 часа в день * 60 минут в час)
SQL> alter session set nls_date_format = 'dd.mm.yyyy hh24:mi:ss'
Session altered.
SQL> select sysdate right_now,
2 sysdate - 20/(24*60) twenty_minutes_ago
3 from dual;
RIGHT_NOW TWENTY_MINUTES_AGO
------------------- -------------------
24.10.2019 08:40:18 24.10.2019 08:20:18
SQL>
Как создать CSV?
Один из вариантов - сохранить ваш запрос в .SQLфайл и использовать планировщик задач операционной системы (для MS Windows) или cron (для Unix) или любой другой операционной системы. Пусть скрипт спул результат. Существует множество опций SQL * Plus SET
, которые вы можете использовать, чтобы сделать вывод красивым;например:
set termout off
set trimspool on
set echo off
set verify off
set autoprint off
set serveroutput off
set arraysize 1000
set pagesize 0
set linesize 100
set long 10000
set numwidth 10
set feedback off
set colsep ';'
col empno format 99999
col ename format a10
col sal format 999G990
spool emps.txt
select empno, ename, sal from emp
where timestamp_column >= sysdate - 20/(24*60);
spool off
Другой вариант - создать хранимую процедуру, которая будет использовать пакет UTL_FILE
, и создать этот файл в каталоге (вам придется поговоритьвашему администратору базы данных об этом, обычно - на сервере базы данных; администратор базы данных должен создать каталог (как объект Oracle) и предоставить вам права на чтение / запись).
ЗатемВы должны создать задание базы данных (используя пакеты DBMS_JOB
или DBMS_SCHEDULER
), планируя его запуск каждые 20 минут.
Возможно, первый вариант проще реализовать;если ничего другого, CSV создается на вашем локальном компьютере, а не на сервере.