SQLPLUS의 실행 결과를 CSV로 출력하고 싶습니다(※ 가변 길이는 가변 길이)
SQLPLUS의 실행 결과를 CSV로 출력하려면
요즈음 업무상 써야 하기 때문에 필기를 해야 한다
<하고 싶은 일>
DOS 배치 처리를 통해 SQLPLUS에 다음 SQL 파일 실행
실행 결과를 CSV로 내보냅니다.
이때 가변 길이 항목은 고정 길이로 출력되기 때문에 다음과 같다.
서술이 필요하다.
옵션
컨텐트
echo off
콘솔 메시지 숨기기
linesize
행의 크기 결정
pagesize
지정한 줄 수에 따라 구분자 삽입
feedback off
X 행 선택 숨기기
test.sqlset echo off
set linesize 1000
set pagesize 0
set feedback off
spool 'c:\tmp.csv'
SELECT EMP_NAME ||','||
ADDRESS1 ||','||
ADDRESS2 ||','||
ADDRESS3
FROM EMP;
spool off
exit;
이렇게 하면 잘 돼요.
SELECT 프로젝트 옆에 "|", "||"를 붙이는 것이 중요합니다.
그러나 원하는 경우 위의 SELECT 항목에 열 이름(AS "")을 붙여 출력합니다.
여러 번 시도해 보았지만 잘하지 못했으니 손을 드세요
이상!
겸사겸사 말씀드리지만, 호출자의 회차는 아래와 같습니다
test.batecho off
rem **********************
rem 初期化処理
rem **********************
SET BASEDIR=%~dp0
SET LOG=%BASEDIR%log\%date:~0,4%%date:~5,2%%date:~8,2%_test.log
SET LISTFILE=%BASEDIR%%date:~0,4%%date:~5,2%%date:~8,2%_resultCsvFile.csv
SET SQLFILE=%BASEDIR%sql\test.sql
SET UID=*****
SET PASS=*****
SET SID=*****
rem **********************
rem ログ初期処理
rem **********************
ECHO バッチ処理を開始します >> %LOG%
ECHO 開始時刻:%DATE%%TIME% >> %LOG%
Rem SQL実行
echo /* 接続情報 */ >> %LOG%
echo %UID%/%PASS%@%SID% >> %LOG%
sqlplus -s %UID%/%PASS%@%SID% @%SQLFILE% %LISTFILE%
Rem SQL実行結果判定
IF %ERRORLEVEL% NEQ 0 GOTO ERROR
REM 正常終了
goto NORMAL
Rem **********************
Rem 正常終了
Rem **********************
:NORMAL
ECHO バッチを正常終了します >> %LOG%
ECHO 終了時刻:%DATE%%TIME% >> %LOG%
ECHO エラーコード:%ERRORLEVEL% >> %LOG%
EXIT /B
Rem **********************
Rem 異常終了
Rem **********************
:ERROR
ECHO バッチを異常終了します >> %LOG%
ECHO 終了時刻:%DATE%%TIME% >> %LOG%
ECHO エラーコード:%ERRORLEVEL% >> %LOG%
EXIT /B
echo on
끝맺다
Reference
이 문제에 관하여(SQLPLUS의 실행 결과를 CSV로 출력하고 싶습니다(※ 가변 길이는 가변 길이)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/SoreKiita/items/77cd9508ade6054d0793
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
set echo off
set linesize 1000
set pagesize 0
set feedback off
spool 'c:\tmp.csv'
SELECT EMP_NAME ||','||
ADDRESS1 ||','||
ADDRESS2 ||','||
ADDRESS3
FROM EMP;
spool off
exit;
echo off
rem **********************
rem 初期化処理
rem **********************
SET BASEDIR=%~dp0
SET LOG=%BASEDIR%log\%date:~0,4%%date:~5,2%%date:~8,2%_test.log
SET LISTFILE=%BASEDIR%%date:~0,4%%date:~5,2%%date:~8,2%_resultCsvFile.csv
SET SQLFILE=%BASEDIR%sql\test.sql
SET UID=*****
SET PASS=*****
SET SID=*****
rem **********************
rem ログ初期処理
rem **********************
ECHO バッチ処理を開始します >> %LOG%
ECHO 開始時刻:%DATE%%TIME% >> %LOG%
Rem SQL実行
echo /* 接続情報 */ >> %LOG%
echo %UID%/%PASS%@%SID% >> %LOG%
sqlplus -s %UID%/%PASS%@%SID% @%SQLFILE% %LISTFILE%
Rem SQL実行結果判定
IF %ERRORLEVEL% NEQ 0 GOTO ERROR
REM 正常終了
goto NORMAL
Rem **********************
Rem 正常終了
Rem **********************
:NORMAL
ECHO バッチを正常終了します >> %LOG%
ECHO 終了時刻:%DATE%%TIME% >> %LOG%
ECHO エラーコード:%ERRORLEVEL% >> %LOG%
EXIT /B
Rem **********************
Rem 異常終了
Rem **********************
:ERROR
ECHO バッチを異常終了します >> %LOG%
ECHO 終了時刻:%DATE%%TIME% >> %LOG%
ECHO エラーコード:%ERRORLEVEL% >> %LOG%
EXIT /B
echo on
Reference
이 문제에 관하여(SQLPLUS의 실행 결과를 CSV로 출력하고 싶습니다(※ 가변 길이는 가변 길이)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/SoreKiita/items/77cd9508ade6054d0793텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)