SQLPLUS의 실행 결과를 CSV로 출력하고 싶습니다(※ 가변 길이는 가변 길이)

2092 단어 dosSqlplus

SQLPLUS의 실행 결과를 CSV로 출력하려면


요즈음 업무상 써야 하기 때문에 필기를 해야 한다
<하고 싶은 일>
DOS 배치 처리를 통해 SQLPLUS에 다음 SQL 파일 실행
실행 결과를 CSV로 내보냅니다.
이때 가변 길이 항목은 고정 길이로 출력되기 때문에 다음과 같다undefined.
서술이 필요하다.
옵션
컨텐트
echo off
콘솔 메시지 숨기기
linesize
행의 크기 결정
pagesize
지정한 줄 수에 따라 구분자 삽입
feedback off
X 행 선택 숨기기
test.sql
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;
undefined
이렇게 하면 잘 돼요.
SELECT 프로젝트 옆에 "|", "||"를 붙이는 것이 중요합니다.
그러나 원하는 경우 위의 SELECT 항목에 열 이름(AS "")을 붙여 출력합니다.
여러 번 시도해 보았지만 잘하지 못했으니 손을 드세요
이상!
겸사겸사 말씀드리지만, 호출자의 회차는 아래와 같습니다
test.bat
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
끝맺다

좋은 웹페이지 즐겨찾기