it-source

sql developer를 이용한 대용량 데이터 내보내기 방법 - Oracle

criticalcode 2023. 7. 5. 20:46
반응형

sql developer를 이용한 대용량 데이터 내보내기 방법 - Oracle

▁data다▁i니싶의 데이터를 하고 싶습니다.UAT DBDEV DB의 내보내기 에서 이 하려고 할 때SQL Developer오류가 발생했습니다.File C:\Users\xxx\export.sql was not opened because it exceeds the maximum automatic open size

UAT 데이터를 DEV에 복사하려면 어떻게 해야 합니까?

ORACLE Version 12C
SQL Developer Version 4.0.0.13

SQL Developer 포럼에서 다음과 같은 답변을 찾았습니다.

"최대 자동 열림 크기"는 재정의할 방법 없이 500000(바이트)의 값으로 하드 코딩된 것으로 보입니다.이를 제한함으로써 대용량 파일을 열려고 할 때 Java Out Of Memory의 잠재적인 불만 사항을 차단합니다.

이러한 제한에도 불구하고 SQL Developer 내에서 파일을 보려면 File|Open 메뉴를 사용하십시오.그 큰 파일들은 외부 편집기를 사용하세요.그리고 경고 대화 상자를 표시하지 않기 위해 파일을 자동으로 열지 않으려면 도구|환경설정|데이터베이스|DDL 옵션 내보내기/보기 및 "내보낼 때 SQL 파일 열기" 상자의 선택을 취소합니다.

내보내기 파일에 삽입 행이 모두 포함되어 있지 않은 것이 확실합니까?메모리 부족 또는 디스크가 꽉 찬 상태가 아니면 버그가 됩니다.방금 당신의 시나리오를 55000 행 테이블에서 시험해봤는데 수출이 되었습니다.약 20MB의 sql.모든 행이 포함되었습니다.

Gary Graham SQL Developer Team에게 감사드립니다.

요약하자면 SQL 개발자가 대용량 데이터 파일을 여는 데 가장 적합한 도구가 아니라는 것입니다.

개리의 대답이 어느 정도 당신을 인도하기를 바랍니다.

대용량 파일을 열 수 있는 몇 가지 도구에 대한 아이디어가 필요하면 이 링크를 확인하십시오.

솔루션 1:

enter image description here

이 값을 더 높은 값으로 설정합니다!

솔루션 2:

enter image description here

"저장 대상"을 워크시트로 변경합니다!

데터베내를때발생습다니했에서 를 내보낼 때 이 했습니다.insert 첫 , 1번째 로더 형식 선택Export wizard스크린이 문제를 해결했습니다.

이은아마 때문일 것입니다.insertformat은 DDL 및 데이터를 삽입 문으로 사용하는 단일 SQL 스크립트를 만듭니다.따라서 모든 데이터베이스가 단일 스크립트 파일에 덤프됩니다.

loader옵션은 제어 파일, 데이터 파일 및 SQL 파일과 같은 여러 파일을 생성합니다.그리고 테이블마다 별도의 파일이 있습니다.결과적으로 내보내기는 수백 개의 파일로 구성되며 크기 제한에 도달하는 파일은 하나도 없습니다.

그러나 테이블의 데이터 파일이 제한에 도달하기 때문에 데이터 양이 매우 많은 단일 테이블에서는 작동하지 않을 수 있습니다.

아래와 같은 다양한 옵션을 사용할 수 있습니다.

SQL 개발자에서 Table을 마우스 오른쪽 버튼으로 클릭하고 export, export 마법사를 클릭하면 동일한 SQL 파일로 데이터를 내보낼 "Save As" - "separate files" 중 하나를 선택할 수 있습니다.또는 동일한 마법사의 형식 유형을 CSV 형식으로 데이터를 내보내는 CSV로 변경할 수 있습니다.

한 데이터베이스에서 다른 데이터베이스로 대량의 데이터(또는 소량의 데이터)를 전송하려면 이러한 작업을 위해 특별히 설계된 도구를 고려해야 합니다.

무엇보다도, 데이터 펌프를 살펴봅니다.하지만 약간의 학습 곡선이 있습니다.

exp그리고.imp(Oracle을 사용하기도 함)은 처리하기가 조금 더 쉽지만, 데이터 펌프만큼 강력하지는 않고 오래되었습니다.

또한 SQL*Plus copy 명령어에 대해서도 알아볼 수 있습니다.

SQL developer에서 대량의 데이터를 Excel 시트로 복사하는 방법이 있습니다.

따라야 할 단계 : ---> 데이터 내보내기 ----> 마우스 오른쪽 버튼을 클릭하여 형식 유형을 '텍스트'로 선택합니다. --> 유형을 "클립보드"로 선택합니다. --> 엑셀 시트를 열고 아래 사항을 염두에 두고 붙여넣습니다. :)

그런 다음 데이터를 붙여넣습니다. 참고: **Excel의 첫 번째 셀에 데이터를 붙여넣지 마십시오.열 중 하나에 Ctrl+v **

이것은 효과가 있을 거예요.

감사해요.

쿼리를 스풀링하여 결과를 CSV 또는 XLSX 파일로 저장하여 더 큰 결과를 얻을 수 있습니다.예:

spool "D:\Temp\Report.csv"
SELECT /*csv*/ select id,name,age from EMP;
spool off;

1-DEV DB에 UAT DB를 가리키는 데이터베이스 링크(db 링크)를 만들어 DEV DB에 행을 삽입할 수 있습니다.

2-또는 PL/SQL에 CSV 형식의 파일로 데이터를 내보내는 절차를 구축하고 DEV DB에서는 오라클 외부 테이블을 사용하여 해당 파일에서 선택할 수 있습니다.
DATE 열에 주의하여 TO_CHAR을 사용하여 기록합니다.

3-Data pump를 사용하여 UAT DB에서 데이터를 내보낸 다음 DEV DB로 가져오기가 어렵습니다.

Oracle 데이터베이스 명령은 SQLCl by Oracle과 SQL 개발자 모두에서 실행할 수 있으므로 다음과 같이 쉽게 실행할 수 있습니다.

set feedback only -- for Oracle 12.2+, turn off terminal output
set sqlformat insert -- data in "insert into ..." format
-- set sqlformat csv -- data in csv format
spool /path/to/your/file.sql
select * from t; -- lines to export
spool off
set feedback off  -- restore terminal output

가장 간단한 방법은 아래 스크린샷의 "다른 이름으로 저장"을 수정하여 내보내는 동안 단일 파일이 아닌 여러 파일에 저장하는 것입니다.

enter image description here

언급URL : https://stackoverflow.com/questions/30091567/how-to-export-large-amount-of-data-using-sql-developer-oracle

반응형