0
Oracle 버전을 스풀링을 사용하여 만든보기 구조 파일 : 12C SQL 개발자 : 4.1.1.19SQLPLUS -
내가 시작으로 다음과 같은 질문의 코드를 사용하고 있습니다 : SQLPlus - spooling to multiple files from PL/SQL blocks
내가 만들려면 프로세스가 :
내보내기 스풀링으로 하나의 파일에 다음의 결과 (약 110 행) :
각 'DESC'선에 대한3210SPOOL c:\temp\view_test.csv select 'desc '||view_name||';'FROM SYS.ALL_VIEWS WHERE OWNER = 'AN_OWNER_NAME' and substr(VIEW_NAME,1,2)='SN'; SPOOL OFF
의 'DESC'의 결과를 CSV 파일을 생성
desc SPECIFIC_VIEW_NAME;
결과는 각 뷰 각 CSV에서 같을 것 (110) 여기
Name Null Type ---------------------- -------- -------------- ID NOT NULL NUMBER(19) SYS_ID NOT NULL VARCHAR2(1000) ACTIVE VARCHAR2(1000) APRM_ID VARCHAR2(1000) APRM_KEY VARCHAR2(1000) BUSINESS_ONLY VARCHAR2(1000)
set pagesize 0
set trimspool on
set headsep off
set feedback off
set echo off
set verify off
set timing off
set linesize 4000
DEFINE rows_per_file = 50
-- Create an sql file that will create the individual result files
SET DEFINE OFF
SPOOL c:\temp\generate_one.sql
PROMPT COLUMN which_dynamic NEW_VALUE dynamic_filename
PROMPT
PROMPT SELECT 'c:\temp\run_#'||TO_CHAR(&1, 'fm000')||'_result.txt' which_dynamic FROM dual
PROMPT/
PROMPT SPOOL &dynamic_filename
PROMPT SELECT *
PROMPT FROM (SELECT a.*, rownum rnum
PROMPT FROM (select 'desc '||view_name||';'FROM SYS.ALL_VIEWS WHERE OWNER = 'AN_OWNER_NAME' and substr(VIEW_NAME,1,2)='SN') a
PROMPT WHERE rownum <= (&2 * 50))
PROMPT WHERE rnum >= ((&3 - 1) * 50) + 1
PROMPT/
PROMPT SPOOL OFF
SPOOL OFF
SET DEFINE &
-- Define variable to hold number of rows
-- returned by the query
COLUMN num_rows NEW_VALUE v_num_rows
-- Find out how many rows there are to be
SELECT COUNT(*) num_rows
FROM (SELECT LEVEL num_files FROM dual CONNECT BY LEVEL <= 120);
-- Create a master file with the correct number of sql files
SPOOL c:\temp\run_all.sql
SELECT '@c:\temp\generate_one.sql '||TO_CHAR(num_files)
||' '||TO_CHAR(num_files)
||' '||TO_CHAR(num_files) file_name
FROM (SELECT LEVEL num_files
FROM dual
CONNECT BY LEVEL <= CEIL(&v_num_rows/&rows_per_file))
/
SPOOL OFF
-- Now run them all
@c:\temp\run_all.sql