다음을 통해 공유


대량 내보내기 또는 가져오기를 위한 데이터 준비

적용 대상: SQL Server Azure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analytics AnalyticsPlatform System(PDW)

이 섹션에서는 대량 내보내기 작업을 계획하는 방법과 관련된 고려 사항 및 대량 가져오기 작업의 요구 사항에 대해 설명합니다.

참고

대량 가져오기를 위해 데이터 파일의 형식을 지정하는 방법을 잘 모르는 경우 bcp 유틸리티를 사용하여 테이블에서 데이터 파일로 데이터를 내보냅니다. 이 파일에 있는 각 데이터 필드의 서식은 데이터를 해당 테이블 열에 대량으로 가져오는 데 필요한 서식을 보여 줍니다. 데이터 파일의 필드에 대해 같은 데이터 서식을 사용합니다.

대량 내보내기를 위한 데이터 파일 형식 고려 사항

bcp 명령을 사용하여 대량 내보내기 작업을 수행하기 전에 다음 사항을 고려하세요.

  • 데이터를 파일로 내보낼 때 bcp 명령은 지정된 파일 이름을 사용하여 자동으로 데이터 파일을 만듭니다. 해당 파일이 이미 사용되고 있으면 데이터 파일로 대량 복사되는 데이터가 파일의 기존 내용을 덮어씁니다.

  • 테이블 또는 뷰에서 데이터 파일로 대량 내보내려면 대량 복사되는 테이블 또는 뷰에 대한 권한이 필요합니다 SELECT .

  • SQL Server 병렬 검사를 사용하여 데이터를 검색할 수 있습니다. 따라서 SQL Server instance 대량으로 내보낸 테이블 행은 일반적으로 데이터 파일의 특정 순서로 보장되지 않습니다. 대량 내보내기 테이블 행을 데이터 파일의 특정 순서로 표시하려면 queryout 옵션을 사용하여 쿼리에서 대량 내보내기를 수행하고 절을 ORDER BY 지정합니다.

대량 가져오기를 위한 데이터 파일 형식 요구 사항

데이터 파일에서 데이터를 가져오려면 해당 파일은 다음과 같은 기본 요구 사항을 충족해야 합니다.

  • 데이터는 행 및 열 형식이어야 합니다.

참고

대량 가져오기 프로세스 중에 열을 건너뛰거나 순서를 변경할 수 있으므로 데이터 파일의 구조가 SQL Server 테이블의 구조와 동일할 필요가 없습니다.

  • 데이터 파일의 데이터는 문자 또는 네이티브 형식 같이 지원되는 형식이어야 합니다.

  • 데이터는 문자 또는 유니코드 같은 네이티브 이진 형식일 수 있습니다.

  • bcp 명령, BULK INSERT 문 또는 INSERT ... SELECT * FROM OPENROWSET(BULK...) 문을 사용하여 데이터를 가져오려면 대상 테이블이 이미 있어야 합니다.

  • 데이터 파일의 각 필드는 대상 테이블의 해당 열과 호환 가능해야 합니다. 예를 들어 int 필드는 datetime 열에 로드할 수 없습니다. 자세한 내용은 대량 가져오기 또는 대량 내보내기(SQL Server)에 대한 데이터 형식bcp(SQL Server)를 사용할 때 호환성 데이터 형식 지정을 참조하세요.

    참고

    전체 파일이 아닌 데이터 파일에서 가져올 행의 하위 집합을 지정하려면 스위치 및/또는 -L <last_row> 스위치와 함께 -F <first_row>bcp 명령을 사용할 수 있습니다. 자세한 내용은 bcp Utility를 참조하세요.

  • 고정 길이 또는 고정 너비 필드가 있는 데이터 파일에서 데이터를 가져오려면 서식 파일을 사용합니다. 자세한 내용은 XML 서식 파일(SQL Server)을 참조하세요.

  • SQL Server 2017(14.x)부터 CSV 파일을 SQL Server 대량으로 데이터를 가져오기 위한 데이터 파일로 사용할 수 있습니다. CSV 파일의 필드 종결자는 쉼표일 필요가 없습니다. 대량 가져오기를 위한 데이터 파일로 사용하려면 CSV 파일이 다음 제한 사항을 충족해야 합니다.

    • 데이터 필드에 필드 종결자가 포함되어서는 안 됩니다.

    • 데이터 필드의 모든 값은 따옴표("")로 묶지 않습니다.

      Microsoft FoxPro 또는 Visual FoxPro 테이블(.dbf) 파일 또는 Microsoft Excel 워크시트(.xls) 파일에서 데이터를 대량으로 가져오려면 데이터를 이전 제한을 준수하는 CSV 파일로 변환해야 합니다. 파일 확장명은 일반적으로 입니다 .csv. 그런 다음 SQL Server 대량 가져오기 작업에서 파일을 데이터 파일로 사용할 .csv 수 있습니다.

      32비트 시스템(SQL Server 2014(12.x) 및 이전 버전)에서 OLE DB Provider for Jet와 함께 OPENROWSET을 사용하여 대량 가져오기 최적화 없이 CSV 데이터를 SQL Server 테이블로 가져올 수 있습니다. Jet는 데이터 원본과 동일한 디렉터리에 있는 파일로 정의된 스키마를 schema.ini 사용하여 텍스트 파일을 테이블로 처리합니다. CSV 데이터의 경우 파일의 매개 변수 schema.ini 중 하나는 입니다 "FORMAT=CSVDelimited". 이 솔루션을 사용하려면 Jet Text IISAM이 작동하는 방식(연결 문자열 구문, 사용량, schema.ini 레지스트리 설정 옵션 등)을 이해해야 합니다. 이 정보의 가장 좋은 출처는 Microsoft Access 도움말 및 KB(기술 자료) 문서입니다. 자세한 내용은 텍스트 데이터 원본 드라이버 초기화보안된 액세스 데이터베이스에 연결된 서버에서 SQL Server 7.0 분산 쿼리를 사용하는 방법, 방법: Jet OLE DB 공급자 4.0을 사용하여 ISAM 데이터베이스에 연결Jet 공급자의 Text IIsam을 사용하여 구분된 텍스트 파일을 여는 방법을 참조하세요.

또한 데이터 파일에서 테이블로 데이터를 대량으로 가져오는 데는 다음과 같은 요구 사항이 있습니다.

  • 사용자에게 테이블에 대한 및 SELECT 권한이 있어야 합니다INSERT. 또한 사용자는 제약 조건 사용 안 함과 같은 DDL(데이터 정의 언어) 작업이 필요한 옵션을 사용할 때도 권한이 필요합니다 ALTER TABLE .

  • 또는 INSERT ... SELECT * FROM OPENROWSET(BULK...)를 사용하여 BULK INSERT 데이터를 대량으로 가져오는 경우 데이터 파일은 SQL Server 프로세스의 보안 프로필(사용자가 제공된 로그인을 사용하여 로그인하는 경우) 또는 위임된 보안에서 사용되는 Microsoft Windows 로그인을 SQL Server 통해 읽기 작업에 액세스할 수 있어야 합니다. 또한 사용자에게 파일을 읽을 수 있는 ADMINISTER BULK OPERATIONS 권한이 있어야 합니다.

참고

분할된 뷰로 대량 가져오기는 지원되지 않고 분할된 뷰로 데이터를 대량으로 가져오려는 시도는 실패합니다.