Oracle SQL Developer에서 쿼리 결과를 CSV로 내보내는 방법은 무엇입니까?


답변:


376

사용중인 버전

대체 텍스트

2012 년 5 월 5 일 업데이트

Jeff Smith블로그 를 통해 SQL Developer에서 CSV 출력을 얻는 우수한 방법이라고 생각합니다. Jeff의 방법은 아래 방법 1로 표시됩니다.

방법 1

/*csv*/SQL 쿼리에 주석 을 추가하고 쿼리를 스크립트로 실행하십시오 (워크 시트 도구 모음의 F5 또는 두 번째 실행 단추 사용).

여기에 이미지 설명을 입력하십시오

그게 다야.

방법 2

쿼리 실행

대체 텍스트

마우스 오른쪽 버튼을 클릭하고 언로드를 선택하십시오.

최신 정보. Sql Developer 버전 3.0.04에서 언로드가 내보내기로 변경되었습니다. Janis Peisenieks에게 감사의 말을 전합니다.

대체 텍스트

SQL Developer 버전 3.0.04의 스크린 샷 수정

여기에 이미지 설명을 입력하십시오

형식 드롭 다운에서 CSV를 선택하십시오.

대체 텍스트

화면의 나머지 지침을 따르십시오.


25
+1. "언로드"라는 용어는 직관적이지 않은 것 같습니다. 데이터를 "로드"한다는 것은 데이터베이스에 데이터를 삽입하는 것을 의미합니다. 따라서 "언로드"는 데이터가 삭제되었음을 의미해야합니다.
Jeffrey Kemp

8
버전 3.0.04에서는이 옵션의 이름이 내보내기로 변경되었습니다.
Janis Peisenieks

2
큰. ps 대문자 /*CSV*/는 저에게 효과적이지 않지만 소문자 는 작동 /*csv*/하지 않았습니다. 감사!
Eran Medan

3
또한 방법 2는 많은 행 수 (3K 행 정도)로 중단되는 버그 (여전히 버전 3.0.04에 있음)에 빠질 수 있습니다. 이 구식 SQLPLUS 원인을 사용하고 있는데 위의 방법 1을 먼저 보지 못했지만 일부는 다음과 같습니다. {code} SET UNDERLINE OFF SET COLSEP ','SET LINES 20000 PAGES 20000 SET FEEDBACK off-옵션 SET HEADING off 스풀 C : \ Export \ EMP.csv-이제 쿼리 SELECT * FROM EMP; 스풀 끄기
Jim P

1
@topr 방법 1을 사용한 다음 모두를 선택하고 텍스트 편집기에 복사하여 붙여넣고 csv로 저장하십시오. Excel에 직접 붙여 넣을 수도 있지만 확실하지 않습니다.
트래비스

45

정확히 "내보내기"가 아니라 내보내려는 그리드에서 행 을 선택 하거나 Ctrl- 또는 A모두 선택하여 Ctrl-C .

기본값은 탭으로 구분됩니다. Excel이나 다른 편집기에 붙여넣고 원하는 구분 기호를 조작 할 수 있습니다.

또한, 당신이 사용하는 경우 Ctrl- Shift- C대신 Ctrl- C, 당신은 또한 열 머리글을 복사 할 수 있습니다.


5
대단합니다. 헤더를 복사하는 방법을 구체적으로 찾고있었습니다. 감사!
mishkin

3
유일한 문제는 행이 많은 경우 전체 데이터 세트를 다시 쿼리해야 함을 의미합니다. 쿼리가 오래 실행되면 첫 번째 페이지를 많이 기다렸다가 Ctrl + A를 누른 후 모든 페이지를 많이 기다리십시오. 즉, 훌륭한 솔루션이지만 대부분의 시간 동안 만 작동하며 상대적으로 더 빠르거나 작은 쿼리에 적합합니다.
Eran Medan

긴 행 수에서 복사 된 내용을 제거합니다! 이것을 사용하지 마십시오.
Hash

@Mark 자신이 그런 것을 본 적이 없다. 처음 50 행이나 그와 비슷한 것을 유지 했습니까? 그렇다면 별도의 환경 설정이 있습니다. 현재 그리드에있는 내용 만 복사하지만 그리드의 맨 아래로 스크롤하면 SQL Dev가 자동으로 더 많은 행을 가져 오기 때문에 누군가가 그것을 버그로 해석하는 방법을 알 수 있습니다.
BQ.

1
43K 행의 데이터 에서이 작업을 시도했지만 내보내기 옵션 방식이 더 빠릅니다. 몇 줄의 데이터 만 있으면 훌륭합니다.
izikandrw

28

참고로, 당신은 대체 할 수 /*csv*/ 도 포함하는 것으로 다른 형식을 /*xml*/하고 /*html*/. select /*xml*/ * from emp는 예를 들어 쿼리 결과가 포함 된 xml 문서를 반환합니다. 쿼리에서 XML을 반환하는 쉬운 방법을 찾고있는 동안이 기사를 보았습니다.


4
/ * insert * /가 특히 유용합니다.
jeremyjjbrown

파일은 어디로 갑니까?
Anomaly

아, 신경 쓰지 마라. 나는 "run as script"부분에 대해 글로 글을 썼는데, 이것이 일반적인 실행 버튼과는 다르다는 것을 깨닫지 못했다.
Anomaly

4

참고로 문제가있는 사람에게는 CSV 타임 스탬프 내보내기에 몇 시간을 보냈던 버그가 있습니다. 내 보내야 할 일부 필드는 타임 스탬프 유형이었습니다. 현재 버전 (이 게시물 기준 3.0.04)에서도 CSV 내보내기 옵션이 타임 스탬프 주위에 그룹화 기호를 넣지 못하는 것으로 나타납니다. 타임 스탬프의 공백으로 인해 가져 오기가 매우 어려워졌습니다. 내가 찾은 가장 좋은 해결 방법은 모든 타임 스탬프에 TO_CHAR ()을 사용하여 쿼리를 작성하는 것이었지만 약간의 작업이 필요하지만 올바른 출력을 생성합니다. 이로 인해 누군가가 시간을 절약하거나 다음 릴리스에서 Oracle을 사용할 수 있기를 바랍니다.


1
내 버전 3.0.04에는 여전히 큰 내보내기 (광산이 3K 행)로 중단되는 버그가 있습니다. 간단한 수정은 SQLPLUS를 대신 사용하는 것이 었습니다.
Jim P

필자의 경우 Spatial Data Type ( docs.oracle.com/cd/B19306_01/appdev.102/b14255/… )은 MDSYS.SDO_GEOMETRY(2001,8307,MDSYS.SDO_POINT_TYPE(-122.39096,37.79251,NULL),NULL,NULL)따옴표로 묶지 않고 쉼표로 통지 되었습니다. 그리고 동적 SQL을 사용하고 있으므로이 열을 TO_CHAR () 할 수 없습니다. 어떤 제안?
붉은 완두콩

Dynamic SQL을 사용하고 *를 선택했지만 (Spatial 데이터 유형의 단일 SQL 열에 대한 예외를 위해 이것을 수정하고 싶지는 않지만) 두 가지를 시도 할 수 있습니다 .1) 다른 COLSEP 사용 '|'또는 2) SELECT 문 전에 docs.oracle.com/cd/B19306_01/server.102/b14357/ch12013.htm
The Red Pea

2

SQL 개발자로부터 로컬 시스템으로 내보내기

Path : C:\Source_Table_Extract\des_loan_due_dtls_src_boaf.csv

    SPOOL "Path where you want to save the file"
    SELECT /*csv*/ * FROM TABLE_NAME;

1

CSV 내보내기는 데이터를 이스케이프하지 않습니다. \결과 \""a이 아닌 이스케이프처럼 보이기 때문에 끝나는 문자열에주의 하십시오 \. 그런 다음 숫자가 잘못되어 "전체 행이 손상됩니다.


따옴표가 이스케이프되는 방법을 결정할 수 있으며 기본값은 백 슬래시가 아닌 다른 따옴표 문자로 이스케이프 처리하는 것입니다. 이 경우 "foo\"완벽하게 유효한 인용 문자열입니다.
Ken Williams

미리 알면 \의 모든 발생을 \\로 대체하는 것은 간단합니다. 감사!
jpaugh

예, 대부분의 CSV 가져 오기 도구에는 간단하고 잘못 될 수 있습니다.
Wormbo
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.