Wollen Ergebnisse in mehrere CSV-Dateien und Cutoff bei einer bestimmten Zeilennummer für jede Datei ausgeben. Ich habe Folgendes versucht, möchte aber nicht mehrere Abfragen erstellen.Orakel sqlplus Spool zu mehreren Dateien nach Zeilennummer
set colsep ,
DEFINE SPOOL_BASE_NAME = "spool"
DEFINE PAGE_SIZE = 10
DEFINE PAGE_NO = 1
DEFINE SPOOL_EXT=".csv"
SPOOL &SPOOL_BASE_NAME.&PAGE_NO.&SPOOL_EXT
SELECT *
FROM (SELECT a.*,rownum rnum
FROM (SELECT username, account_status,DEFAULT_TABLESPACE,TEMPORARY_TABLESPACE FROM dba_users order by username) a
WHERE rownum <= &PAGE_SIZE * &PAGE_NO)
WHERE rnum >= &PAGE_SIZE * (&PAGE_NO - 1) + 1;
SPOOL OFF
DEFINE PAGE_NO = 2
SPOOL &SPOOL_BASE_NAME.&PAGE_NO
SELECT *
FROM (SELECT a.*,rownum rnum
FROM (SELECT username, account_status,DEFAULT_TABLESPACE,TEMPORARY_TABLESPACE FROM dba_users order by username) a
WHERE rownum <= &PAGE_SIZE * &PAGE_NO)
WHERE rnum >= &PAGE_SIZE * (&PAGE_NO - 1) + 1;
SPOOL OFF
Haben Sie verwenden müssen ' SQL * Plus' dafür? Es scheint viel einfacher zu sein, eine einzelne Datei aus 'SQL * Plus' zu erstellen und dann ein Stapel-Skript zu haben, das' SQL * Plus' aufruft und die Datei dann in kleinere Stücke aufteilt. Oder verwenden Sie 'utl_file', um die Dateien innerhalb einer Schleife zu generieren. –
ich benutze Linux, wie würde diese Batch-Datei aussehen? – Dom
Es kann so einfach sein wie 'split -l <> file_name' wobei' <> 'ist die Anzahl der Zeilen, die Sie pro Datei http://www.theunixschool.com/2012/10/10-examples-of-split wollen -command-in-unix.html –