2017-12-18 2 views
0

오라클 12cAmazon Web Services EC2의 인스턴스에서 사용 중입니다.오라클에서 CSV로 데이터 내보내기

5M 레코드가있는 Oracle 테이블에서 CSV 형식의 로컬 폴더로 데이터를 내보내려고합니다.

Redhat/bash 환경에서 신속하게이를 수행 할 스크립트 또는 프로그램이 있습니까?

최소한의 설치 및 설정이 필요합니다.

+0

검색을 사용하십시오. 이미 다뤘던이 질문에 대한 12 가지 변형이 있어야합니다. https://stackoverflow.com/questions/19448322/directly-export-a-query-to-csv-using-sql -developer/19448806 – thatjeffsmith

답변

1

빨리 원합니까? 간단한 SPOOL SQLPlus 명령은 어떻습니까? 당신은 예뻐 다른 SET 명령 (유형 도움말 SET SQLPLUS 명령 프롬프트에서)를 사용하여 만들 수 있지만, 일반적인 개념은 다음과 같다 :

SQL> set colsep ',' 
SQL> spool emp.csv 
SQL> select employee_id, first_name, last_name 
    2 from employees 
    3 where rownum < 5; 

EMPLOYEE_ID,FIRST_NAME   ,LAST_NAME 
-----------,--------------------,------------------------- 
     100,Steven    ,King 
     101,Neena    ,Kochhar 
     102,Lex     ,De Haan 
     103,Alexander   ,Hunold 

SQL> spool off; 
SQL> $type emp.csv 
SQL> select employee_id, first_name, last_name 
    2 from employees 
    3 where rownum < 5; 

EMPLOYEE_ID,FIRST_NAME   ,LAST_NAME 
-----------,--------------------,------------------------- 
     100,Steven    ,King 
     101,Neena    ,Kochhar 
     102,Lex     ,De Haan 
     103,Alexander   ,Hunold 

SQL> spool off; 

SQL> 

한 다음 확인을

[OP의 코멘트를보고 난 후에, LF에 의해 편집] 그 노력을하지 않았고 SET가 제공하는 것을 조사 했으므로 여기에 간다. 깨끗한 결과를 얻고 싶다면 (표제, 밑줄, SELECT 명령 등), SQL 파일을 만든다. SQL) :

SET ECHO OFF 
SET VERIFY OFF 
SET TRIMSPOOL ON 
SET TRIMOUT ON 
SET LINESIZE 9999 
SET PAGESIZE 0 
SET FEEDBACK OFF 
SET TIMING OFF 
SET TIME OFF 
SET COLSEP ',' 
SPOOL emp.csv 

SELECT employee_id, first_name, last_name 
FROM employees 
WHERE rownum < 5; 

SPOOL OFF 

이제 SQLPlus에 연결하고 해당 스크립트를 실행하십시오.

SQL> @sp 
     100,Steven    ,King 
     101,Neena    ,Kochhar 
     102,Lex     ,De Haan 
     103,Alexander   ,Hunold 
SQL> 

마지막으로 EMP.CSV를 살펴보면 멋지고 깨끗함을 알 수 있습니다.

만족하십니까?

+0

이것은 출력으로 정확한 CSV 형식을 제공하지 못했습니다. 많은 헤더, 대시, 열 구분선 등이있었습니다. 깨끗한 CSV 형식을 얻는 방법이 있습니까? 감사.. – Joe