0
結果を複数のcsvファイルに出力し、各ファイルの特定の行番号で切り捨てたい。以下を試してみましたが、複数のクエリを作成したくありません。oracle sqlplus行番号別に複数のファイルにスプールする
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
あなたは 'を使用する必要がありますかSQL * Plus'これは? 'SQL * Plus'から単一のファイルを作成してから、' SQL * Plus'を呼び出してファイルを小さなまとまりに分割するバッチスクリプトを作成する方がはるかに簡単です。あるいは、 'utl_file'を使ってループ内からファイルを生成してください。 –
私はlinuxを使っていますが、そのバッチファイルはどのように見えますか? – Dom
'split -l <> file_name'と同じくらい簡単です。ここで' <>はファイルごとに必要な行の数です。http://www.theunixschool.com/2012/10/10-examples-of-split -command-in-unix.html –