Oracle 데이터베이스 테이블을 csv 파일로 언로드하는 방법


18

Oracle 11g 릴리스 1 데이터베이스에서 특정 데이터를 검색하여 하나 이상의 CSV 파일로 제공해야합니다. 데이터는 여러 테이블 및 / 또는 뷰에 있습니다. 이 모든 것은 명령 행을 통해 작동해야합니다. 가장 좋은 방법은 무엇입니까?

답변:


11

아룬,

이제 sqlcl은 Oracle SQL Developer 4.1 EA2 (4.1.0.18.37)에서 사용할 수 있으므로 오래되고 유명한 sqlplus와 같이 많이 사용할 수 있습니다. sqlcl에는 csv에 대한 출력 형식 설정이 있습니다.

set sqlformat csv
spool x.csv
select * from yourtable[s];
spool off

sqlcl checkout Kris '블로그 에 대한 자세한 정보

sqlcl이 가장 쉬워지기 전에 APEX를 사용하고 보고서를 csv로 내보내는 것이 가장 쉬웠습니다. 평범한 sqlplus에서는 다음을 사용하여이를 수행 할 수 있습니다

set lines 9999 -- the appropriate size
set head off  -- no header lines
set colsep ';' --column separator to ;
set pages 0 -- no pages
set feed off
select your data;
spool to_tofile
/
spool off

결과가 응용 프로그램 서버 또는 클라이언트에 기록되는 경우 가장 효과적입니다. 데이터베이스 서버에 작성해야하는 경우 utl_file이 더 나은 옵션 일 수 있습니다.

로널드


8

내장 된 UTL_FILE 패키지를 살펴 봐야 합니다. 몇 가지 방법으로 사용할 수 있습니다.

  1. UTL_FILE 패키지를 사용하여 여러 파일에 쓰는 패키지에 원하는 수의 프로 시저를 작성할 수 있습니다. 그런 다음 SQL * Plus를 포함한 거의 모든 응용 프로그램에서이 프로 시저를 호출 할 수 있습니다.

  2. PL / SQL 스크립트를 작성하여 동일한 작업을 수행하고 명령 행에 @scriptname을 지정하여 SQL * Plus 명령 행 자체에서 스크립트를 호출 할 수 있습니다.

  3. UTL_FILE을 사용하여 블록을 SQL * Plus에 직접 붙여 넣을 수는 있지만 한 번만 내보내기에 사용해야하며 최상의 경로가 아닐 수도 있습니다.

가장 간단한 방법으로 UTL_FILE을 사용하는 파일 내보내기는 FOPEN 에 대한 호출 , PUT_LINE에 대한 하나 이상의 호출 및 FCLOSE에 대한 호출로 구성 됩니다.


4

성능이 중요한 경우 공급 업체의 도구를 고려할 수 있습니다.

BMC, Wisdomforce, CoSort, DBCrane의 툴을 평가했습니다. 그것들은 모두 스풀, utl_file 또는 외부 테이블보다 훨씬 빠릅니다. 우리 상사는 라이센스에 너무 많은 돈을 쓰고 싶지 않기 때문에 DBCrane 을 사용 하고 있습니다.


3

Python 및 cx_Oracle 모듈을 사용하여 CSV 형식으로 디스크에 데이터를 추출 할 수 있습니다.

cx_Oracle을 사용하여 Oracle에 연결하는 방법은 다음과 같습니다.

constr='scott/tiger@localhost:1521/ORCL12'
con = cx_Oracle.connect(constr)
cur = con.cursor()

데이터를 가져온 후 Python 목록을 반복하여 데이터를 CSV 형식으로 저장할 수 있습니다.

for i, chunk in enumerate(chunks(cur)):
    f_out.write('\n'.join([column_delimiter.join(row[0]) for row in chunk]))
    f_out.write('\n')

TableHunter-For-Oracle을 작성할 때이 방법을 사용했습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.