programing

탭으로 구분된 데이터 파일을 생성하기 위한 SQL Plus 설정

javajsp 2023. 7. 13. 20:38

탭으로 구분된 데이터 파일을 생성하기 위한 SQL Plus 설정

주어진 sql 쿼리를 스프레드시트로 가져오거나 추가 처리를 위해 탭으로 구분된 출력으로 변환하는 데 도움이 되는 sqlplus 구성 지침 세트를 가진 사람이 있습니까?

저스틴이 그의 링크에서 지적했듯이, 사용하는 것은set colsepfunction SQLPlus 명령을 사용하면 각 열에 대해 구분 기호를 입력할 수 있습니다.

하지만 탭 구분의 경우,set colsep Chr(9)작동하지 않습니다.

UNIX 또는 LINUX의 경우 사용set colsep ' '단일 탭 사이의 공백은 입력된 탭입니다.

Windows의 경우 다음 설정을 사용합니다.

col TAB# new_value TAB NOPRINT
select chr(9) TAB# from dual;
set colsep "&TAB"

select * from table;

한 번 이상 훔쳐본 특정 스크립트는 데이터를 플랫 파일로 추출할 때 AskTom 스레드에서 가져온 것입니다.SQL*Plus에서 빠르고 더러운 플랫 파일이 필요한 경우.하지만 진행 중인 프로세스를 위해서는 Tom이 이전에 스레드에 게시한 DUMP_CSV 함수를 선호합니다.

바보 같은 해결책이 있어요아주 잘 작동했습니다.

해결책

SELECT column1 || CHR(9) || column2 || CHR(9) || column3 ... ...
FROM table

이면의 원칙.

사실, 그건 그냥 끈 연결일 뿐입니다.

CHR(9) -> '\t'

column1 || CHR(9) || column2 -> concat (column1, '\t', column2)

탭 문자는 보이지 않지만, 다음을 입력하면:-

set clsep Z

그러나 Z 대신 키보드에서 Tab 키를 누른 다음 Enter 키를 누르면 작동합니다. SQL Plus는 공백(보이지 않는 탭) 다음 문자가 clsep임을 인식합니다.

모든 설정을 /cli.sql이라는 파일에 넣었기 때문에 이렇게 합니다.

@/cli.sql

전부 싣기 위해서요

set serveroutput on
SET NEWPAGE NONE
set feedback off
set echo off
set feedback off
set heading off
set colsep  
set pagesize 0 
SET UNDERLINE OFF
set pagesize 50000
set linesize 32767
connect use/password

(주의 - 줄 끝에 보이지 않는 공백 뒤에 보이지 않는 탭이 있습니다:)

set colsep  

맛있게 드세요!

Oracle 설명서를 확인하십시오.

Oracle에서 탭의 ASCII 값 9와 chr 함수를 사용하여 탭을 생성할 수 있습니다.

select chr(9) from dual;

언급URL : https://stackoverflow.com/questions/106323/sqlplus-settings-to-generate-tab-separated-data-file