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.)