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

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

[!참고]

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

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

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

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

  • 테이블 또는 뷰에서 데이터 파일로 대량 내보내기를 수행하려면 대량 복사할 테이블 또는 뷰에 대한 SELECT 권한이 있어야 합니다.

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

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

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

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

[!참고]

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

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

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

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

  • 데이터 파일의 각 필드는 대상 테이블의 해당 열과 호환 가능해야 합니다. 예를 들어 int 필드는 datetime 열로 로드할 수 없습니다. 자세한 내용은 네이티브, 문자 또는 유니코드 형식 사용bcp를 사용하여 데이터 형식을 호환 가능하도록 지정을 참조하십시오.

    [!참고]

    전체 파일이 아니라 데이터 파일에서 가져올 행 하위 집합을 지정하기 위해 bcp 명령에 -Ffirst_row 스위치 및/또는 -Llast_row 스위치를 사용할 수 있습니다. 자세한 내용은 bcp 유틸리티를 참조하십시오.

  • 고정 길이 또는 고정 너비 필드가 있는 데이터 파일에서 데이터를 가져오려면 서식 파일을 사용해야 합니다. 자세한 내용은 XML 서식 파일 이해예제 XML 서식 파일를 참조하십시오.

  • CSV(쉼표로 구분된 값) 파일은 SQL Server 대량 가져오기 작업에서 지원되지 않습니다. 그러나 경우에 따라 데이터를 SQL Server로 대량으로 가져오기 위한 데이터 파일로 CSV(쉼표로 구분된 값) 파일이 사용될 수 있습니다. CSV 파일의 필드 종결자로는 쉼표 이외에 다른 문자도 사용될 수 있습니다. 대량 가져오기를 위한 데이터 파일로 사용하려면 CSV 파일이 다음 제한 사항을 충족해야 합니다.

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

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

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

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

또한 데이터 파일의 데이터를 테이블로 대량으로 가져오려면 다음 요구 사항을 충족해야 합니다.

  • 사용자는 테이블에 대한 INSERT 및 SELECT 권한이 있어야 합니다. 사용자가 제약 조건 해제 같은 DDL(데이터 정의 언어) 작업을 필요로 하는 옵션을 사용할 경우 ALTER TABLE 권한도 있어야 합니다.

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

[!참고]

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