web-dev-qa-db-ja.com

PL / SQL Developer(Oracle)でクエリのCSVエクスポートを自動化する方法は?

私はOracleやPL/SQL Developerのプロではありません(主にmySQLとMS SQL Serverを使用して管理しています)。

私は管理者ではありませんが、PL/SQL Developerを介してOracleの多くのテーブルへの読み取りアクセス権を持っています。

CSV形式でいくつかのテーブル(まあ、クエリ)の自動(たとえば、毎日)エクスポートをスケジュールする機能が必要です。それが私のローカルコンピュータ、ネットワーク、電子メールに関係なく、何でも。

これがどのように達成されるかを誰かが知っていますか?

1
user45867

(MS Windowsでの)1つのオプションは、

  • データをファイルにスプールするSQLファイルを作成する
  • そのSQLスクリプトを呼び出すBATスクリプトを作成する
  • タスクスケジューラで毎日のジョブをスケジュールする

SQLPlusをまだインストールしていない場合は、インストールする必要があります。 PL/SQL DeveloperはGUIツールです。 SQLPlusはコマンドラインツールです。 Oracle Clientソフトウェア経由でインストールできます。OracleTechnology Networkのダウンロードセクションからダウンロードできます。

Scottのスキーマに基づくSQLファイルは次のようになります。

set linesize 100
set pagesize 100
set colsep ';'

spool dept.txt
select * from dept;
spool off

spool emp.txt
select * from emp;
spool off;

exit

BATファイル:

sqlplus -s -l scott/tiger@xe @daily.sql

タスクスケジューラ:必要なときにBATスクリプトを実行するジョブを作成します。アクセス権のあるディレクトリ(C:\ Tempなど)で実行します。

結果のDEPT.TXTファイルは次のようになります。

    DEPTNO;DNAME         ;LOC                                                                       
----------;--------------;-------------                                                             
        10;ACCOUNTING    ;NEW YORK                                                                  
        20;RESEARCH      ;DALLAS                                                                    
        30;SALES         ;CHICAGO                                                                   
        40;OPERATIONS    ;BOSTON                                                                    

SQLファイル内のSETコマンドのリストは非常に単純です。調査したいオプションが多数あります。たとえば、これはより長いlistで、より多くのオプション(列のフォーマットを含む)があります。

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

あなたはあなたのニーズに合ったセットを見つけるためにこれら(そしておそらくそれ以上)を試す必要があります。

2
Littlefoot