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

적용 대상:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System(PDW)

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

참고 항목

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

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

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

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

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

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

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

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

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

참고 항목

대량 가져오기 프로세스 동안 열을 건너뛰거나 다시 정렬할 수 있으므로 데이터 파일 구조는 SQL Server 테이블 구조와 동일할 필요가 없습니다.

  • 데이터 파일의 데이터는 문자 또는 원시 형식과 같은 지원되는 형식이어야 합니다.

  • 데이터는 유니코드를 포함하여 문자 또는 원시 이진 형식일 수 있습니다.

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

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

    참고 항목

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

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

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

    • 데이터 필드에는 필드 종결자가 포함되지 않습니다.

    • 데이터 필드의 값을 모두 따옴표("")로 묶거나 모두 묶지 않아야 합니다.

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

      32비트 시스템(SQL Server 2014(12.x) 이하)에서 OPENROWSET을 OLE DB Provider for Jet와 함께 사용하면 대량 가져오기를 최적화하지 않아도 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 Provider 4.0을 사용하여 ISAM 데이터베이스에 연결하는 방법, Jet 공급자의 Text IIsam을 사용하여 분리된 텍스트 파일을 여는 방법을 참조하세요.

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

  • 사용자는 테이블에 대한 INSERTSELECT 권한이 있어야 합니다. 또한 사용자는 제약 조건 비활성화와 같은 DDL(데이터 정의 언어) 작업이 필요한 옵션을 사용할 때 ALTER TABLE 권한이 필요합니다.

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

참고 항목

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