BULK INSERT(Transact-SQL)BULK INSERT (Transact-SQL)

이 항목은 다음에 적용됩니다.예SQL Server(2008부터)예Azure SQL Database아니요Azure SQL Data Warehouse 아니요병렬 데이터 웨어하우스 THIS TOPIC APPLIES TO:yesSQL Server (starting with 2008)yesAzure SQL DatabasenoAzure SQL Data Warehouse noParallel Data Warehouse

데이터 파일을 SQL ServerSQL Server에서 사용자가 지정한 형식으로 데이터베이스 테이블이나 뷰로 가져옵니다.Imports a data file into a database table or view in a user-specified format in SQL ServerSQL Server

항목 링크 아이콘 Transact-SQL 구문 규칙Topic link icon Transact-SQL Syntax Conventions

구문Syntax


BULK INSERT   
   [ database_name . [ schema_name ] . | schema_name . ] [ table_name | view_name ]   
      FROM 'data_file'   
     [ WITH   
    (   
   [ [ , ] BATCHSIZE = batch_size ]   
   [ [ , ] CHECK_CONSTRAINTS ]   
   [ [ , ] CODEPAGE = { 'ACP' | 'OEM' | 'RAW' | 'code_page' } ]   
   [ [ , ] DATAFILETYPE =   
      { 'char' | 'native'| 'widechar' | 'widenative' } ]   
   [ [ , ] DATASOURCE = 'data_source_name' ]
   [ [ , ] ERRORFILE = 'file_name' ]
   [ [ , ] ERRORFILE_DATASOURCE = 'data_source_name' ]   
   [ [ , ] FIRSTROW = first_row ]   
   [ [ , ] FIRE_TRIGGERS ]   
   [ [ , ] FORMATFILE_DATASOURCE = 'data_source_name' ]
   [ [ , ] KEEPIDENTITY ]   
   [ [ , ] KEEPNULLS ]   
   [ [ , ] KILOBYTES_PER_BATCH = kilobytes_per_batch ]   
   [ [ , ] LASTROW = last_row ]   
   [ [ , ] MAXERRORS = max_errors ]   
   [ [ , ] ORDER ( { column [ ASC | DESC ] } [ ,...n ] ) ]   
   [ [ , ] ROWS_PER_BATCH = rows_per_batch ]   
   [ [ , ] ROWTERMINATOR = 'row_terminator' ]   
   [ [ , ] TABLOCK ]   

   -- input file format options
   [ [ , ] FORMAT = 'CSV' ]
   [ [ , ] FIELDQUOTE = 'quote_characters']
   [ [ , ] FORMATFILE = 'format_file_path' ]   
   [ [ , ] FIELDTERMINATOR = 'field_terminator' ]   
   [ [ , ] ROWTERMINATOR = 'row_terminator' ]   
    )]   

인수Arguments

database_namedatabase_name
지정한 테이블이나 뷰가 상주하는 데이터베이스 이름입니다.Is the database name in which the specified table or view resides. 지정하지 않으면 기본값은 현재 데이터베이스입니다.If not specified, this is the current database.

schema_nameschema_name
테이블 또는 뷰 스키마의 이름입니다.Is the name of the table or view schema. schema_name 경우 대량 가져오기 작업을 수행 하는 사용자에 대 한 기본 스키마가 지정 된 테이블 또는 뷰의 스키마는 선택 사항입니다.schema_name is optional if the default schema for the user performing the bulk-import operation is schema of the specified table or view. 경우 스키마 지정 하지 않으면이 고 대량 가져오기 작업을 수행 하는 사용자의 기본 스키마가 지정한 테이블이 나 뷰, 다른 SQL ServerSQL Server 반환 하는 오류 메시지와 대량 가져오기 작업이 취소 됩니다.If schema is not specified and the default schema of the user performing the bulk-import operation is different from the specified table or view, SQL ServerSQL Server returns an error message, and the bulk-import operation is canceled.

table_nametable_name
데이터를 대량으로 가져올 테이블 또는 뷰의 이름입니다.Is the name of the table or view to bulk import data into. 모든 열이 동일한 기본 테이블을 참조하는 뷰만 사용할 수 있습니다.Only views in which all columns refer to the same base table can be used. 뷰로 데이터를 로드에 대 한 제한에 대 한 자세한 내용은 참조 insert( Transact SQL ) .For more information about the restrictions for loading data into views, see INSERT (Transact-SQL).

' data_file '' data_file '
지정한 테이블이나 뷰로 가져올 데이터가 포함된 데이터 파일의 전체 경로입니다.Is the full path of the data file that contains data to import into the specified table or view. BULK INSERT는 디스크(예: 네트워크, 플로피 디스크, 하드 디스크 등)에서 데이터를 가져올 수 있습니다.BULK INSERT can import data from a disk (including network, floppy disk, hard disk, and so on).

data_file 에 서버에서 유효한 경로 지정 해야 SQL ServerSQL Server 실행 합니다.data_file must specify a valid path from the server on which SQL ServerSQL Server is running. 경우 data_file 이 원격 파일, 범용 명명 규칙 (UNC) 이름을 지정 합니다.If data_file is a remote file, specify the Universal Naming Convention (UNC) name. UNC 이름은 \ \ Systemname\ShareName\경로 \ FileName합니다.A UNC name has the form \\Systemname\ShareName\Path\FileName. \\SystemX\DiskZ\Sales\update.txt)을 입력합니다.For example, \\SystemX\DiskZ\Sales\update.txt.
적용 대상: SQL Server 2017SQL Server 2017 CTP 1.1.Applies to: SQL Server 2017SQL Server 2017 CTP 1.1.
부터는 SQL Server 2017SQL Server 2017 CTP1.1는 data_file Azure blob 저장소에 있을 수 있습니다.Beginning with SQL Server 2017SQL Server 2017 CTP1.1, the data_file can be in Azure blob storage.

' data_source_name ' ' data_source_name '
적용 대상: SQL Server 2017SQL Server 2017 CTP 1.1.Applies to: SQL Server 2017SQL Server 2017 CTP 1.1.
명명 된 외부 데이터 원본에 가져올 파일의 Azure Blob 저장소 위치를 가리킵니다.Is a named external data source pointing to the Azure Blob storage location of the file that will be imported. 외부 데이터 원본을 사용 하 여 만들어야는 TYPE = BLOB_STORAGE 옵션에 추가 된 SQL Server 2017SQL Server 2017 CTP 1.1.The external data source must be created using the TYPE = BLOB_STORAGE option added in SQL Server 2017SQL Server 2017 CTP 1.1. 자세한 내용은 참조 외부 데이터 원본 만들기합니다.For more information, see CREATE EXTERNAL DATA SOURCE.

BATCHSIZE = batch_sizeBATCHSIZE =batch_size
일괄 처리에 포함될 행 수를 지정합니다.Specifies the number of rows in a batch. 모든 일괄 처리는 하나의 트랜잭션으로 서버에 복사됩니다.Each batch is copied to the server as one transaction. 이 작업이 실패하면 SQL ServerSQL Server는 모든 일괄 처리에 대한 트랜잭션을 커밋하거나 롤백합니다.If this fails, SQL ServerSQL Server commits or rolls back the transaction for every batch. 기본적으로 지정된 데이터 파일의 모든 데이터는 하나의 일괄 처리입니다.By default, all data in the specified data file is one batch. 성능 고려 사항에 대한 자세한 내용은 이 항목의 뒷부분에 나오는 "주의"를 참조하십시오.For information about performance considerations, see "Remarks," later in this topic.

CHECK_CONSTRAINTSCHECK_CONSTRAINTS
대량 가져오기 작업 중 대상 테이블 또는 뷰의 모든 제약 조건을 검사하도록 지정합니다.Specifies that all constraints on the target table or view must be checked during the bulk-import operation. CHECK_CONSTRAINTS 옵션을 지정하지 않으면 모든 CHECK 및 FOREIGN KEY 제약 조건이 무시되고 작업 이후 테이블의 제약 조건은 트러스트될 수 없는 것으로 표시됩니다.Without the CHECK_CONSTRAINTS option, any CHECK and FOREIGN KEY constraints are ignored, and after the operation, the constraint on the table is marked as not-trusted.

참고

UNIQUE 및 PRIMARY KEY 제약 조건은 항상 적용됩니다.UNIQUE, and PRIMARY KEY constraints are always enforced. NOT NULL 제약 조건으로 정의된 문자 열로 가져올 때 텍스트 파일에 값이 없으면 BULK INSERT는 공백 문자열을 삽입합니다.When importing into a character column that is defined with a NOT NULL constraint, BULK INSERT inserts a blank string when there is no value in the text file.

특정 지점에서는 전체 테이블의 제약 조건을 확인해야 합니다.At some point, you must examine the constraints on the whole table. 대량 가져오기 작업을 수행하기 전에 테이블이 비어 있지 않으면 제약 조건의 유효성을 다시 검사하는 비용이 증분 데이터에 CHECK 제약 조건을 적용하는 비용을 초과할 수 있습니다.If the table was non-empty before the bulk-import operation, the cost of revalidating the constraint may exceed the cost of applying CHECK constraints to the incremental data.

입력 데이터에 제약 조건을 위반하는 행이 포함된 경우에는 제약 조건을 사용하지 않을 수 있습니다(기본 동작).A situation in which you might want constraints disabled (the default behavior) is if the input data contains rows that violate constraints. CHECK 제약 조건을 사용하지 않으면 데이터를 가져온 다음 Transact-SQLTransact-SQL 문을 사용하여 잘못된 데이터를 제거할 수 있습니다.With CHECK constraints disabled, you can import the data and then use Transact-SQLTransact-SQL statements to remove the invalid data.

참고

MAXERRORS 옵션은 제약 조건 확인에 적용되지 않습니다.The MAXERRORS option does not apply to constraint checking.

코드 페이지 = { 'ACP' | 'OEM' | 'RAW' | 'code_page' }CODEPAGE = { 'ACP' | 'OEM' | 'RAW' | 'code_page' }
데이터 파일에서 데이터의 코드 페이지를 지정합니다.Specifies the code page of the data in the data file. 코드 페이지와 데이터를 포함 하는 경우에 관련 된 char, varchar, 또는 텍스트 보다 큰 문자 값을 갖는 열 127 이하의 보다 32합니다.CODEPAGE is relevant only if the data contains char, varchar, or text columns with character values greater than 127 or less than 32.

참고

MicrosoftMicrosoft각 열에 대 한 데이터 정렬 이름을 지정 하는 것을 권장 한 서식 파일합니다. recommends that you specify a collation name for each column in a format file.

CODEPAGE 값CODEPAGE value DescriptionDescription
ACPACP char, varchar, 또는 텍스트 데이터 형식에서 변환 됩니다는 ANSIANSI / MicrosoftMicrosoft Windows 코드 페이지 (ISO 1252)에 SQL ServerSQL Server 코드 페이지입니다.Columns of char, varchar, or text data type are converted from the ANSIANSI/ MicrosoftMicrosoft Windows code page (ISO 1252) to the SQL ServerSQL Server code page.
OEM(기본값)OEM (default) char, varchar, 또는 텍스트 를 시스템 OEM 코드 페이지에서 데이터 형식 변환 됩니다는 SQL ServerSQL Server 코드 페이지입니다.Columns of char, varchar, or text data type are converted from the system OEM code page to the SQL ServerSQL Server code page.
RAWRAW 다른 코드 페이지로의 변환이 이루어지지 않는 가장 빠른 옵션입니다.No conversion from one code page to another occurs; this is the fastest option.
code_pagecode_page 특정 코드 페이지 번호(예: 850)입니다.Specific code page number, for example, 850.

**중요 한 * \* 이전 버전을 SQL Server 2016SQL Server 2016 코드 페이지 65001 (utf-8 인코딩)을 지원 하지 않습니다.** Important *\* Versions prior to SQL Server 2016SQL Server 2016 do not support code page 65001 (UTF-8 encoding).

DATAFILETYPE = { 'char' | 'native' | 'widechar' | 'widenative' }DATAFILETYPE = { 'char' | 'native' | 'widechar' | 'widenative' }
BULK INSERT에서 지정된 데이터 파일 유형 값을 사용하여 가져오기 작업을 수행하도록 지정합니다.Specifies that BULK INSERT performs the import operation using the specified data-file type value.

DATAFILETYPE 값DATAFILETYPE value 모든 데이터 표시 형식All data represented in:
char (기본값)char (default) 문자 형식Character format.

자세한 내용은 문자 형식을 사용하여 데이터 가져오기 또는 내보내기(SQL Server)를 참조하세요.For more information, see Use Character Format to Import or Export Data (SQL Server).
네이티브native 네이티브(데이터베이스) 데이터 형식.Native (database) data types. 대량으로 데이터를 가져와 네이티브 데이터 파일을 만들 SQL ServerSQL Server 를 사용 하는 bcp 유틸리티입니다.Create the native data file by bulk importing data from SQL ServerSQL Server using the bcp utility.

네이티브 값은 char 값을 대체하여 보다 뛰어난 성능을 제공합니다.The native value offers a higher performance alternative to the char value.

자세한 내용은 네이티브 형식을 사용하여 데이터 가져오기 또는 내보내기(SQL Server)를 참조하세요.For more information, see Use Native Format to Import or Export Data (SQL Server).
widecharwidechar 유니코드 문자Unicode characters.

자세한 내용은 유니코드 문자 형식을 사용하여 데이터 가져오기 또는 내보내기(SQL Server)를 참조하세요.For more information, see Use Unicode Character Format to Import or Export Data (SQL Server).
widenativewidenative 네이티브 (데이터베이스) 데이터 형식을 제외 하 고 char, varchar, 및 텍스트 열, 데이터는 유니코드로 저장 합니다.Native (database) data types, except in char, varchar, and text columns, in which data is stored as Unicode. 만들기는 widenative 데이터 파일에서 데이터 대량 가져오기 SQL ServerSQL Server 를 사용 하는 bcp 유틸리티입니다.Create the widenative data file by bulk importing data from SQL ServerSQL Server using the bcp utility.

widenative 값이 제공 하는 더 높은 성능 대신 widechar합니다.The widenative value offers a higher performance alternative to widechar. 데이터 파일에 포함 하는 경우 ANSIANSI 확장 문자가 지정 widenative합니다.If the data file contains ANSIANSI extended characters, specify widenative.

자세한 내용은 유니코드 네이티브 형식을 사용하여 데이터 가져오기 또는 내보내기(SQL Server)을 참조하세요.For more information, see Use Unicode Native Format to Import or Export Data (SQL Server).

ERRORFILE ='file_name'ERRORFILE ='file_name'
형식 오류가 있어 OLE DB 행 집합으로 변환할 수 없는 행을 수집하는 데 사용되는 파일을 지정합니다.Specifies the file used to collect rows that have formatting errors and cannot be converted to an OLE DB rowset. 이러한 행은 데이터 파일에서 "있는 그대로" 이 오류 파일에 복사됩니다.These rows are copied into this error file from the data file "as is."

오류 파일은 명령이 실행될 때 생성됩니다.The error file is created when the command is executed. 파일이 이미 있으면 오류가 발생합니다.An error occurs if the file already exists. 또한 확장명이 .ERROR.txt인 제어 파일이 생성됩니다.Additionally, a control file that has the extension .ERROR.txt is created. 이 파일은 오류 파일의 각 행을 참조하여 오류를 진단합니다.This references each row in the error file and provides error diagnostics. 오류를 해결하는 즉시 데이터를 로드할 수 있습니다.As soon as the errors have been corrected, the data can be loaded.
적용 대상: SQL Server 2017SQL Server 2017 CTP 1.1.Applies to: SQL Server 2017SQL Server 2017 CTP 1.1. 부터는 SQL Server 2017SQL Server 2017, error_file_path Azure blob 저장소에 있을 수 있습니다.Beginning with SQL Server 2017SQL Server 2017, the error_file_path can be in Azure blob storage.

' errorfile_data_source_name''errorfile_data_source_name'
적용 대상: SQL Server 2017SQL Server 2017 CTP 1.1.Applies to: SQL Server 2017SQL Server 2017 CTP 1.1. 명명 된 외부 데이터 소스는 가져오기 중 발견 된 오류가 포함 될 오류 파일의 Azure Blob 저장소 위치를 가리킵니다.Is a named external data source pointing to the Azure Blob storage location of the error file that will contain errors found during the import. 외부 데이터 원본을 사용 하 여 만들어야는 TYPE = BLOB_STORAGE 옵션에 추가 된 SQL Server 2017SQL Server 2017 CTP 1.1.The external data source must be created using the TYPE = BLOB_STORAGE option added in SQL Server 2017SQL Server 2017 CTP 1.1. 자세한 내용은 참조 외부 데이터 원본 만들기합니다.For more information, see CREATE EXTERNAL DATA SOURCE.

FIRSTROW = first_rowFIRSTROW =first_row
로드할 첫 번째 행의 번호를 지정합니다.Specifies the number of the first row to load. 기본값은 지정한 데이터 파일의 첫 번째 행입니다.The default is the first row in the specified data file. FIRSTROW는 1부터 시작합니다.FIRSTROW is 1-based.

참고

FIRSTROW 특성은 열 머리글을 건너뛰기 위해 제공된 것이 아닙니다.The FIRSTROW attribute is not intended to skip column headers. BULK INSERT 문에서는 머리글 건너뛰기가 지원되지 않습니다.Skipping headers is not supported by the BULK INSERT statement. 행을 건너뛰면 SQL Server 데이터베이스 엔진SQL Server Database Engine은 필드 종결자만 확인하며 건너뛴 행의 필드에 있는 데이터의 유효성을 검사하지 않습니다.When skipping rows, the SQL Server 데이터베이스 엔진SQL Server Database Engine looks only at the field terminators, and does not validate the data in the fields of skipped rows.

FIRE_TRIGGERSFIRE_TRIGGERS
대량 가져오기 작업 중에 대상 테이블에서 정의된 삽입 트리거가 실행되도록 지정합니다.Specifies that any insert triggers defined on the destination table execute during the bulk-import operation. 트리거가 대상 테이블의 INSERT 작업에 대해 정의되면 완료된 모든 일괄 처리에 대해 발생합니다.If triggers are defined for INSERT operations on the target table, they are fired for every completed batch.

FIRE_TRIGGERS를 지정하지 않으면 삽입 트리거가 실행되지 않습니다.If FIRE_TRIGGERS is not specified, no insert triggers execute.

FORMATFILE_DATASOURCE = 'data_source_name'FORMATFILE_DATASOURCE = 'data_source_name'
적용 대상: SQL Server 2017SQL Server 2017 1.1.Applies to: SQL Server 2017SQL Server 2017 1.1.
명명 된 외부 데이터 소스는 가져온된 데이터의 스키마를 정의 하는 서식 파일의 Azure Blob 저장소 위치를 가리킵니다.Is a named external data source pointing to the Azure Blob storage location of the format file that will define the schema of imported data. 외부 데이터 원본을 사용 하 여 만들어야는 TYPE = BLOB_STORAGE 옵션에 추가 된 SQL Server 2017SQL Server 2017 CTP 1.1.The external data source must be created using the TYPE = BLOB_STORAGE option added in SQL Server 2017SQL Server 2017 CTP 1.1. 자세한 내용은 참조 외부 데이터 원본 만들기합니다.For more information, see CREATE EXTERNAL DATA SOURCE.

KEEPIDENTITYKEEPIDENTITY
가져온 데이터 파일의 ID 값이 ID 열에 사용되도록 지정합니다.Specifies that identity value or values in the imported data file are to be used for the identity column. KEEPIDENTITY를 지정하지 않는 경우 이 열의 ID 값을 확인하지만 가져오지는 않습니다. SQL ServerSQL Server에서는 테이블 생성 중에 지정된 초기값 및 증가값에 따라 고유한 값을 자동으로 할당합니다.If KEEPIDENTITY is not specified, the identity values for this column are verified but not imported and SQL ServerSQL Server automatically assigns unique values based on the seed and increment values specified during table creation. 데이터 파일에 테이블이나 뷰의 ID 열 값이 포함되지 않은 경우 서식 파일을 사용하여 데이터를 가져올 때 테이블이나 뷰의 ID 열을 생략하도록 지정합니다. SQL ServerSQL Server에서는 해당 열에 고유한 값을 자동으로 할당합니다.If the data file does not contain values for the identity column in the table or view, use a format file to specify that the identity column in the table or view is to be skipped when importing data; SQL ServerSQL Server automatically assigns unique values for the column. 자세한 내용은 DBCC CHECKIDENT(Transact-SQL)를 참조하세요.For more information, see DBCC CHECKIDENT (Transact-SQL).

자세한 내용은 유지에 대 한 식별 값 참조 유지 Identity 값 데이터 대량 가져오기 ( SQL Server ) .For more information, see about keeping identify values see Keep Identity Values When Bulk Importing Data (SQL Server).

KEEPNULLSKEEPNULLS
대량 가져오기 작업 시 삽입된 열에 기본값이 지정되지 않도록 하고, 빈 열이 Null 값을 보유하도록 지정합니다.Specifies that empty columns should retain a null value during the bulk-import operation, instead of having any default values for the columns inserted. 자세한 내용은 대량 가져오기 수행 중 Null 유지 또는 기본값 사용(SQL Server)을 참조하세요.For more information, see Keep Nulls or Use Default Values During Bulk Import (SQL Server).

KILOBYTES_PER_BATCH = kilobytes_per_batchKILOBYTES_PER_BATCH = kilobytes_per_batch
크기 (KB)로 일괄 처리당 데이터의 대략적인 수를 지정 kilobytes_per_batch합니다.Specifies the approximate number of kilobytes (KB) of data per batch as kilobytes_per_batch. 기본적으로 KILOBYTES_PER_BATCH는 알 수 없습니다.By default, KILOBYTES_PER_BATCH is unknown. 성능 고려 사항에 대한 자세한 내용은 이 항목의 뒷부분에 나오는 "주의"를 참조하십시오.For information about performance considerations, see "Remarks," later in this topic.

LASTROW=last_rowLASTROW=last_row
로드할 마지막 행의 번호를 지정합니다.Specifies the number of the last row to load. 기본값은 0이며 지정한 데이터 파일의 마지막 행을 가리킵니다.The default is 0, which indicates the last row in the specified data file.

MAXERRORS = max_errorsMAXERRORS = max_errors
대량 가져오기 작업을 취소하기 전에 데이터에서 허용되는 최대 구문 오류 수를 지정합니다.Specifies the maximum number of syntax errors allowed in the data before the bulk-import operation is canceled. 대량 가져오기 작업으로 가져올 수 없는 각 행은 무시되고 하나의 오류로 계산됩니다.Each row that cannot be imported by the bulk-import operation is ignored and counted as one error. 경우 max_errors 를 지정 하지 않으면 기본값은 10입니다.If max_errors is not specified, the default is 10.

참고

MAX_ERRORS 옵션에는 제약 조건 확인 이나 변환에 적용 되지 않습니다 moneybigint 데이터 형식입니다.The MAX_ERRORS option does not apply to constraint checks or to converting money and bigint data types.

순서 ({ [ASC | DESC]} [ ,... n ] )ORDER ( { column [ ASC | DESC ] } [ ,... n ] )
데이터 파일의 데이터 정렬 방법을 지정합니다.Specifies how the data in the data file is sorted. 가져올 데이터를 테이블의 클러스터형 인덱스(있는 경우)에 따라 정렬하면 대량 가져오기 성능이 향상됩니다.Bulk import performance is improved if the data being imported is sorted according to the clustered index on the table, if any. 데이터 파일을 클러스터형 인덱스 키와 다른 순서로 정렬하거나 테이블에 클러스터형 인덱스가 없으면 ORDER 절이 무시됩니다.If the data file is sorted in a different order, that is other than the order of a clustered index key or if there is no clustered index on the table, the ORDER clause is ignored. 지정한 열 이름은 대상 테이블에서 올바른 열 이름이어야 합니다.The column names supplied must be valid column names in the destination table. 기본적으로 대량 삽입 작업은 데이터 파일이 정렬되지 않았음을 전제로 합니다.By default, the bulk insert operation assumes the data file is unordered. 대량 가져오기 작업을 최적화하기 위해 SQL ServerSQL Server 에서는 가져온 데이터가 정렬되어 있는지도 확인합니다.For optimized bulk import, SQL ServerSQL Server also validates that the imported data is sorted.

n
복수 열을 지정할 수 있음을 나타내는 자리 표시자입니다.Is a placeholder that indicates that multiple columns can be specified.

ROWS_PER_BATCH = rows_per_batchROWS_PER_BATCH =rows_per_batch
데이터 파일에 있는 대략적인 데이터 행 수를 나타냅니다.Indicates the approximate number of rows of data in the data file.

기본적으로 데이터 파일의 모든 데이터는 단일 트랜잭션으로 서버에 전송되며 일괄 처리의 행 수는 쿼리 최적화 프로그램에 알려지지 않습니다.By default, all the data in the data file is sent to the server as a single transaction, and the number of rows in the batch is unknown to the query optimizer. ROWS_PER_BATCH를 0보다 큰 값으로 지정하면 서버에서 이 값을 사용하여 대량 가져오기 작업을 최적화합니다.If you specify ROWS_PER_BATCH (with a value > 0) the server uses this value to optimize the bulk-import operation. ROWS_PER_BATCH에 지정된 값은 실제 행 수와 대략적으로 동일해야 합니다.The value specified for ROWS_PER_BATCH should approximately the same as the actual number of rows. 성능 고려 사항에 대한 자세한 내용은 이 항목의 뒷부분에 나오는 "주의"를 참조하십시오.For information about performance considerations, see "Remarks," later in this topic.

TABLOCKTABLOCK
대량 가져오기 작업이 진행되는 동안 테이블 수준 잠금을 획득하도록 지정합니다.Specifies that a table-level lock is acquired for the duration of the bulk-import operation. 테이블에 인덱스가 없고 TABLOCK이 지정되어 있으면 여러 클라이언트가 동시에 테이블을 로드할 수 있습니다.A table can be loaded concurrently by multiple clients if the table has no indexes and TABLOCK is specified. 기본적으로 잠금 동작은 table lock on bulk load테이블 옵션에 의해 결정됩니다.By default, locking behavior is determined by the table option table lock on bulk load. 대량 가져오기 작업이 진행되는 동안에만 잠금을 보유하면 테이블에 대한 잠금 경합이 줄어들고 이 경우 성능이 크게 향상됩니다.Holding a lock for the duration of the bulk-import operation reduces lock contention on the table, in some cases can significantly improve performance. 성능 고려 사항에 대한 자세한 내용은 이 항목의 뒷부분에 나오는 "주의"를 참조하십시오.For information about performance considerations, see "Remarks," later in this topic.

Columnstore 인덱스.For columnstore index. 내부적으로 여러 행 집합으로 구분 하기 때문에 잠금 동작 차이가 있습니다.the locking behaviour is different because it is internally divided into multiple rowsets. 각 스레드는 동시 데이터 로드 세션을 갖는 병렬 데이터 로드를 허용 하는 행 집합에 X 잠금을 수행 하 여 각 행 집합에 단독으로 데이터를 로드 합니다.Each thread loads data exclusively into each rowset by taking a X lock on the rowset allowing parallel data load with concurrent data load sessions. TABLOCK 옵션을 사용할 다른 동시 스레드를 동시에 데이터 로드 수행 되지 것입니다 (달리 기존의 행 집합에 대 한 BU 잠금) 테이블에 대해 X 잠금을 수행 하는 스레드를 발생 합니다.The use of TABLOCK option will cause thread to take an X lock on the table (unlike BU lock for traditional rowsets) which will prevent other concurrent threads to load data concurrently.

입력된 파일 형식 옵션입니다.Input file format options

형식 = 'CSV'FORMAT = 'CSV'
적용 대상: SQL Server 2017SQL Server 2017 CTP 1.1.Applies to: SQL Server 2017SQL Server 2017 CTP 1.1.
쉼표로 구분 된 값 파일에 규정 지정는 RFC 4180 표준입니다.Specifies a comma separated values file compliant to the RFC 4180 standard.

FIELDQUOTE = 'field_quote'FIELDQUOTE = 'field_quote'
적용 대상: SQL Server 2017SQL Server 2017 CTP 1.1.Applies to: SQL Server 2017SQL Server 2017 CTP 1.1.
CSV 파일의 따옴표 문자로 사용 될 문자를 지정 합니다.Specifies a character that will be used as the quote character in the CSV file. 에 정의 된 대로 인용 문자 (") 따옴표 문자로 사용될지를 지정 하지는 RFC 4180 표준입니다.If not specified, the quote character (") will be used as the quote character as defined in the RFC 4180 standard.

FORMATFILE ='format_file_path'FORMATFILE ='format_file_path'
서식 파일의 전체 경로를 지정합니다.Specifies the full path of a format file. 사용 하 여 생성 된 저장된 응답을 포함 하는 데이터 파일을 설명 하는 서식 파일의 bcp 유틸리티에서 동일한 테이블 또는 뷰.A format file describes the data file that contains stored responses created by using the bcp utility on the same table or view. 다음과 같은 경우에 서식 파일이 사용됩니다.The format file should be used if:

  • 데이터 파일의 열이 테이블 또는 뷰보다 많거나 적을 경우The data file contains greater or fewer columns than the table or view.

  • 열 순서가 다를 경우The columns are in a different order.

  • 열 구분 기호가 다를 경우The column delimiters vary.

  • 데이터 서식에 기타 변경 내용이 있을 경우.There are other changes in the data format. 서식 파일은 일반적으로 사용 하 여 생성 된 bcp 유틸리티 및 필요에 따라 텍스트 편집기로 수정 합니다.Format files are typically created by using the bcp utility and modified with a text editor as needed. 자세한 내용은 bcp Utility를 참조하세요.For more information, see bcp Utility.

적용 대상: SQL Server 2017SQL Server 2017 CTP 1.1.Applies to: SQL Server 2017SQL Server 2017 CTP 1.1.
부터는 SQL Server 2017SQL Server 2017 CTP 1.1는 format_file_path Azure blob 저장소에 있을 수 있습니다.Beginning with SQL Server 2017SQL Server 2017 CTP 1.1, the format_file_path can be in Azure blob storage.

FIELDTERMINATOR ='field_terminator'FIELDTERMINATOR ='field_terminator'
에 사용할 필드 종결자 지정 charwidechar 데이터 파일.Specifies the field terminator to be used for char and widechar data files. 기본 필드 종결자는 \t(탭 문자)입니다.The default field terminator is \t (tab character). 자세한 내용은 필드 및 행 종결자 지정(SQL Server)을 참조하세요.For more information, see Specify Field and Row Terminators (SQL Server).

ROWTERMINATOR ='row_terminator'ROWTERMINATOR ='row_terminator'
에 사용할 행 종결자 지정 charwidechar 데이터 파일.Specifies the row terminator to be used for char and widechar data files. 기본 행 종결자는 \r\n (줄 바꿈 문자)입니다.The default row terminator is \r\n (newline character). 자세한 내용은 필드 및 행 종결자 지정(SQL Server)을 참조하세요.For more information, see Specify Field and Row Terminators (SQL Server).

호환성Compatibility

BULK INSERT는 파일에서 읽은 데이터에 엄격한 데이터 유효성 검사 및 데이터 검사를 강제로 실행합니다. 이로 인해 기존 스크립트가 잘못된 데이터에서 실행되면 오류가 발생할 수 있습니다.BULK INSERT enforces strict data validation and data checks of data read from a file that could cause existing scripts to fail when they are executed on invalid data. 예를 들어 BULK INSERT는 다음을 확인합니다.For example, BULK INSERT verifies that:

  • 네이티브 표시가 float 또는 실제 데이터 형식을 사용할 수 있습니다.The native representations of float or real data types are valid.

  • 유니코드 데이터의 길이가 짝수 바이트인지 여부Unicode data has an even-byte length.

데이터 형식Data Types

String 데이터 형식에서 Decimal 데이터 형식으로의 변환String-to-Decimal Data Type Conversions

BULK INSERT에 사용 되는 문자열에서 decimal 데이터 형식 변환이 동일한 규칙을 따르며는 Transact-SQLTransact-SQL 변환 함수 과학적 표기법을 사용 하는 숫자 값을 나타내는 문자열을 거부 합니다.The string-to-decimal data type conversions used in BULK INSERT follow the same rules as the Transact-SQLTransact-SQL CONVERT function, which rejects strings representing numeric values that use scientific notation. 따라서 BULK INSERT는 이러한 문자열을 잘못된 값으로 처리하고 변환 오류를 보고합니다.Therefore, BULK INSERT treats such strings as invalid values and reports conversion errors.

이 문제를 해결 하려면 사용 하 여 서식 파일을 대량 가져오기 과학적 표기법 float 10 진수 열에 데이터를 합니다.To work around this behavior, use a format file to bulk import scientific notation float data into a decimal column. 서식 파일에서 열을 명시적으로 설명 실제 또는 float 데이터입니다.In the format file, explicitly describe the column as real or float data. 이러한 데이터 형식에 대 한 자세한 내용은 참조 하십시오. float 및 real ( Transact SQL ) .For more information about these data types, see float and real (Transact-SQL).

참고

서식 파일을 나타내며 실제 으로 데이터는 SQLFLT4 데이터 형식 및 float 으로 데이터는 SQLFLT8 데이터 형식입니다.Format files represent real data as the SQLFLT4 data type and float data as the SQLFLT8 data type. 비 XML 서식 파일에 대 한 정보를 참조 하세요. bcp (를 사용 하 여 파일 저장 유형 지정 SQL Server ) .For information about non-XML format files, see Specify File Storage Type by Using bcp (SQL Server).

과학적 표기법을 사용하는 숫자 값 가져오기 예Example of Importing a Numeric Value that Uses Scientific Notation

이 예에서는 다음 테이블을 사용합니다.This example uses the following table:

CREATE TABLE t_float(c1 float, c2 decimal (5,4));  

사용자가 t_float 테이블로 데이터를 대량 가져오려고 합니다.The user wants to bulk import data into the t_float table. 과학적 표기법을 포함 하는 데이터 파일 C:\t_float-c.dat에 float 데이터; 예:The data file, C:\t_float-c.dat, contains scientific notation float data; for example:

8.0000000000000002E-28.0000000000000002E-2  

그러나 두 번째 열 t_float에서 c2 데이터 형식을 사용하므로 BULK INSERT는 이 데이터를 직접 decimal으로 가져올 수 없습니다.However, BULK INSERT cannot import this data directly into t_float, because its second column, c2, uses the decimal data type. 따라서 서식 파일이 필요합니다.Therefore, a format file is necessary. 서식 파일은 과학적 표기법 매핑해야 float 데이터를 decimal 형식 열의 c2합니다.The format file must map the scientific notation float data to the decimal format of column c2.

다음 서식 파일은 SQLFLT8 데이터 형식을 사용하여 두 번째 데이터 필드를 두 번째 열로 매핑합니다.The following format file uses the SQLFLT8 data type to map the second data field to the second column:

<?xml version="1.0"?> 
<BCPFORMAT xmlns="http://schemas.microsoft.com/sqlserver/2004/bulkload/format" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
<RECORD> 
<FIELD ID="1" xsi:type="CharTerm" TERMINATOR="\t" MAX_LENGTH="30"/> 
<FIELD ID="2" xsi:type="CharTerm" TERMINATOR="\r\n" MAX_LENGTH="30"/>  </RECORD>  <ROW> 
<COLUMN SOURCE="1" NAME="c1" xsi:type="SQLFLT8"/> 
<COLUMN SOURCE="2" NAME="c2" xsi:type="SQLFLT8"/>  </ROW> </BCPFORMAT> 

이 서식 파일(C:\t_floatformat-c-xml.xml)을 사용하여 테스트 데이터를 테스트 테이블로 가져오려면 다음 Transact-SQLTransact-SQL 문을 실행합니다.To use this format file (using the file name C:\t_floatformat-c-xml.xml) to import the test data into the test table, issue the following Transact-SQLTransact-SQL statement:

BULK INSERT bulktest..t_float  
FROM 'C:\t_float-c.dat' WITH (FORMATFILE='C:\t_floatformat-c-xml.xml');  
GO  

SQLXML 문서 대량 내보내기 또는 가져오기를 위한 데이터 형식Data Types for Bulk Exporting or Importing SQLXML Documents

SQLXML 데이터를 대량으로 내보내거나 가져오려면 서식 파일에서 다음 데이터 형식 중 하나를 사용합니다.To bulk export or import SQLXML data, use one of the following data types in your format file:

데이터 형식Data type 영향Effect
SQLCHAR 또는 SQLVARCHARSQLCHAR or SQLVARCHAR 데이터를 클라이언트 코드 페이지나 데이터 정렬에 포함된 코드 페이지로 보냅니다.The data is sent in the client code page or in the code page implied by the collation). 효과 DATAFILETYPE을 지정 하는 것과 같습니다 'char' = 서식 파일을 지정 하지 않고 있습니다.The effect is the same as specifying the DATAFILETYPE ='char' without specifying a format file.
SQLNCHAR 또는 SQLNVARCHARSQLNCHAR or SQLNVARCHAR 데이터를 유니코드로 보냅니다.The data is sent as Unicode. 효과 DATAFILETYPE을 지정 하는 것과 같습니다 = 'widechar' 서식 파일을 지정 하지 않고 있습니다.The effect is the same as specifying the DATAFILETYPE = 'widechar' without specifying a format file.
SQLBINARY 또는 SQLVARYBINSQLBINARY or SQLVARBIN 데이터를 변환하지 않고 보냅니다.The data is sent without any conversion.

일반적인 주의 사항General Remarks

BULK INSERT 문, INSERT ... 선택 * 에서 openrowset (bulk) 문 및 bcp 명령에서 참조 대량 가져오기 및 데이터의 내보내기 ( SQL Server ) .For a comparison of the BULK INSERT statement, the INSERT ... SELECT * FROM OPENROWSET(BULK...) statement, and the bcp command, see Bulk Import and Export of Data (SQL Server).

대량 가져오기를 위한 데이터 준비 하는 방법에 대 한 정보를 참조 하세요. 대량 내보내기 또는 가져오기 (에 대 한 데이터 준비 SQL Server ) .For information about preparing data for bulk import, see Prepare Data for Bulk Export or Import (SQL Server).

BULK INSERT 문은 데이터를 테이블 또는 뷰로 가져올 사용자 정의 트랜잭션 내에서 실행할 수 있습니다.The BULK INSERT statement can be executed within a user-defined transaction to import data into a table or view. 필요에 따라 대량 데이터 가져오기를 위한 여러 일치 항목을 사용하려면 트랜잭션에서 BULK INSERT 문 내에 BATCHSIZE 절을 지정할 수 있습니다.Optionally, to use multiple matches for bulk importing data, a transaction can specify the BATCHSIZE clause in the BULK INSERT statement. 여러 일괄 처리 트랜잭션이 롤백되는 경우에는 트랜잭션에서 SQL ServerSQL Server로 보낸 모든 일괄 처리가 롤백됩니다.If a multiple-batch transaction is rolled back, every batch that the transaction has sent to SQL ServerSQL Server is rolled back.

상호 운용성Interoperability

CSV 파일에서 데이터 가져오기Importing Data from a CSV file

부터는 SQL Server 2017SQL Server 2017 CTP 1.1, BULK INSERT는 CSV 형식을 지원 합니다.Beginning with SQL Server 2017SQL Server 2017 CTP 1.1, BULK INSERT supports the CSV format.
하기 전에 SQL Server 2017SQL Server 2017 CTP 1.1 쉼표로 구분 된 값 (CSV) 파일에서 지원 되지 않는 SQL ServerSQL Server 대량 가져오기 작업입니다.Before SQL Server 2017SQL Server 2017 CTP 1.1, comma-separated value (CSV) files are not supported by SQL ServerSQL Server bulk-import operations. 그러나 경우에 따라 데이터를 SQL ServerSQL Server로 대량으로 가져오기 위한 데이터 파일로 CSV(쉼표로 구분된 값) 파일이 사용될 수 있습니다.However, in some cases, a CSV file can be used as the data file for a bulk import of data into SQL ServerSQL Server. CSV 데이터 파일에서 데이터를 가져오기 위한 요구 사항에 대 한 정보를 참조 하세요. 대량 내보내기 또는 가져오기 (에 대 한 데이터 준비 SQL Server ) .For information about the requirements for importing data from a CSV data file, see Prepare Data for Bulk Export or Import (SQL Server).

로깅 동작Logging Behavior

대량 가져오기로 수행된 행 삽입 작업이 트랜잭션 로그에 기록되는 경우에 대한 자세한 내용은 대량 가져오기의 최소 로깅을 위한 선행 조건을 참조하세요.For information about when row-insert operations that are performed by bulk import are logged in the transaction log, see Prerequisites for Minimal Logging in Bulk Import.

제한 사항 Restrictions

서식 파일을 BULK INSERT와 함께 사용하면 최대 1024개의 필드만 지정할 수 있습니다.When using a format file with BULK INSERT, you can specify up to 1024 fields only. 이는 테이블에 허용된 최대 열 수와 동일합니다.This is same as the maximum number of columns allowed in a table. 1024개가 넘는 필드를 포함하는 데이터 파일과 함께 BULK INSERT를 사용하면 BULK INSERT에서 4822 오류를 생성합니다.If you use BULK INSERT with a data file that contains more than 1024 fields, BULK INSERT generates the 4822 error. bcp 유틸리티 이러한 제한이, 따라서 1024 개가 넘는 필드를 포함 하는 데이터 파일을 사용 하지 않습니다는 bcp 명령입니다.The bcp utility does not have this limitation, so for data files that contain more than 1024 fields, use the bcp command.

성능 고려 사항Performance Considerations

단일 일괄 처리에서 플러시될 페이지 수가 내부 임계값을 초과하면 버퍼 풀의 전체 검색이 일괄 처리를 커밋할 때 플러시할 페이지를 식별할 수 있습니다.If the number of pages to be flushed in a single batch exceeds an internal threshold, a full scan of the buffer pool might occur to identify which pages to flush when the batch commits. 이 전체 검색으로 대량 가져오기 성능이 저하될 수 있습니다.This full scan can hurt bulk-import performance. 대용량 버퍼 풀이 느린 I/O 하위 시스템과 결합할 때 내부 임계값이 초과될 수 있습니다.A likely case of exceeding the internal threshold occurs when a large buffer pool is combined with a slow I/O subsystem. 대규모 컴퓨터에서 버퍼 오버플로를 방지하려면 대량 최적화를 제거하는 TABLOCK 힌트를 사용하지 않거나 대량 최적화를 유지하는 보다 작은 크기의 일괄 처리를 사용합니다.To avoid buffer overflows on large machines, either do not use the TABLOCK hint (which will remove the bulk optimizations) or use a smaller batch size (which preserves the bulk optimizations).

각 컴퓨터는 서로 다르므로, 데이터 로드로 다양한 일괄 처리 크기를 테스트하여 가장 적합한 크기를 찾는 것이 좋습니다.Because computers vary, we recommend that you test various batch sizes with your data load to find out what works best for you.

보안Security

보안 계정 위임(가장)Security Account Delegation (Impersonation)

사용자가 SQL ServerSQL Server 로그인을 사용하는 경우 SQL ServerSQL Server 프로세스 계정의 보안 프로필이 사용됩니다.If a user uses a SQL ServerSQL Server login, the security profile of the SQL ServerSQL Server process account is used. SQL Server 인증을 사용하는 로그인은 데이터베이스 엔진 외부에서 인증될 수 없습니다.A login using SQL Server authentication cannot be authenticated outside of the Database Engine. 따라서 BULK INSERT 명령이 SQL Server 인증을 사용하는 로그인에 의해 시작되면 데이터에 대한 연결이 SQL Server 프로세스 계정(SQL Server 데이터베이스 엔진 서비스에서 사용하는 계정)의 보안 컨텍스트를 사용하여 설정됩니다.Therefore, when a BULK INSERT command is initiated by a login using SQL Server authentication, the connection to the data is made using the security context of the SQL Server process account (the account used by the SQL Server Database Engine service). 원본 데이터를 성공적으로 읽으려면 SQL Server 데이터베이스 엔진에서 사용하는 계정에 원본 데이터에 대한 액세스 권한을 부여해야 합니다. 반면에 SQL ServerSQL Server 사용자가 Windows 인증을 사용하여 로그온한 경우에는 SQL ServerSQL Server 프로세스의 보안 프로필에 관계없이 해당 사용자 계정으로 액세스할 수 있는 파일만 읽을 수 있습니다.To successfully read the source data you must grant the account used by the SQL Server Database Engine, access to the source data.In contrast, if a SQL ServerSQL Server user logs on by using Windows Authentication, the user can read only those files that can be accessed by the user account, regardless of the security profile of the SQL ServerSQL Server process.

사용 하 여 BULK INSERT 문을 실행할 때 sqlcmd 또는 osql, 한 컴퓨터에서 데이터를 삽입 SQL ServerSQL Server 두 번째 컴퓨터에 지정 하는 data_file UNC 경로 사용 하 여 세 번째 컴퓨터에서 4861 오류가 나타날 수 있습니다.When executing the BULK INSERT statement by using sqlcmd or osql, from one computer, inserting data into SQL ServerSQL Server on a second computer, and specifying a data_file on third computer by using a UNC path, you may receive a 4861 error.

이 오류를 해결 하려면 사용 SQL ServerSQL Server 인증을 지정 하 고는 SQL ServerSQL Server 의 보안 프로필을 사용 하는 로그인은 SQL ServerSQL Server 프로세스, 계정 또는 보안 계정 위임을 사용 하도록 설정 하는 기간을 구성 합니다.To resolve this error, use SQL ServerSQL Server Authentication and specify a SQL ServerSQL Server login that uses the security profile of the SQL ServerSQL Server process account, or configure Windows to enable security account delegation. 위임용으로 사용자 계정이 트러스트될 수 있도록 설정하는 방법은 Windows 도움말을 참조하십시오.For information about how to enable a user account to be trusted for delegation, see Windows Help.

이 및 BULK INSERT를 사용 하기 위한 기타 보안 고려 사항에 대 한 자세한 내용은 참조 를 사용 하 여 BULK INSERT 또는 openrowset( 하 여 데이터 대량 가져오기 대량... ) ( SQL Server ) .For more information about this and other security considerations for using BULK INSERT, see Import Bulk Data by Using BULK INSERT or OPENROWSET(BULK...) (SQL Server).

PermissionsPermissions

INSERT 및 ADMINISTER BULK OPERATIONS 권한이 필요합니다.Requires INSERT and ADMINISTER BULK OPERATIONS permissions. 또한 다음 중 하나 이상이 적용되는 경우에는 ALTER TABLE 권한이 필요합니다.Additionally, ALTER TABLE permission is required if one or more of the following is true:

  • 제약 조건이 있으며 CHECK_CONSTRAINTS 옵션을 지정하지 않았습니다.Constraints exist and the CHECK_CONSTRAINTS option is not specified.

    참고

    기본적으로 제약 조건은 사용되지 않습니다.Disabling constraints is the default behavior. 명시적으로 제약 조건을 확인하려면 CHECK_CONSTRAINTS 옵션을 사용하십시오.To check constraints explicitly, use the CHECK_CONSTRAINTS option.

  • 트리거가 있으며 FIRE_TRIGGER 옵션을 지정하지 않았습니다.Triggers exist and the FIRE_TRIGGER option is not specified.

    참고

    기본적으로 트리거는 실행되지 않습니다.By default, triggers are not fired. 명시적으로 트리거를 발생시키려면 FIRE_TRIGGER 옵션을 사용하십시오.To fire triggers explicitly, use the FIRE_TRIGGER option.

  • KEEPIDENTITY 옵션을 사용하여 데이터 파일에서 ID 값을 가져올 수 있습니다.You use the KEEPIDENTITY option to import identity value from data file.

Examples

1.A. 파이프를 사용하여 파일에서 데이터 가져오기Using pipes to import data from a file

다음 예에서는 필드 종결자로 파이프(AdventureWorks2012.Sales.SalesOrderDetail)를 사용하고 행 종결자로 |을 사용하여 지정한 데이터 파일에서 |\n 테이블로 주문 세부 정보를 가져옵니다.The following example imports order detail information into the AdventureWorks2012.Sales.SalesOrderDetail table from the specified data file by using a pipe (|) as the field terminator and |\n as the row terminator.

BULK INSERT AdventureWorks2012.Sales.SalesOrderDetail  
   FROM 'f:\orders\lineitem.tbl'  
   WITH   
      (  
         FIELDTERMINATOR =' |',  
         ROWTERMINATOR =' |\n'  
      );  

2.B. FIRE_TRIGGERS 인수 사용Using the FIRE_TRIGGERS argument

다음 예에서는 FIRE_TRIGGERS 인수를 지정합니다.The following example specifies the FIRE_TRIGGERS argument.

BULK INSERT AdventureWorks2012.Sales.SalesOrderDetail  
   FROM 'f:\orders\lineitem.tbl'  
   WITH  
     (  
        FIELDTERMINATOR =' |',  
        ROWTERMINATOR = ':\n',  
        FIRE_TRIGGERS  
      );  

3.C. 행 종결자로 줄 바꿈 사용Using line feed as a row terminator

다음 예에서는 UNIX 출력 같은 행 종결자로 줄 바꿈을 사용하는 파일을 가져옵니다.The following example imports a file that uses the line feed as a row terminator such as a UNIX output:

DECLARE @bulk_cmd varchar(1000);  
SET @bulk_cmd = 'BULK INSERT AdventureWorks2012.Sales.SalesOrderDetail  
FROM ''<drive>:\<path>\<filename>''   
WITH (ROWTERMINATOR = '''+CHAR(10)+''')';  
EXEC(@bulk_cmd);  

참고

Microsoft Windows에서는 텍스트 파일을 처리 하는 방법으로 인해 (\n 으로 자동으로 바뀝니다 \r\n)합니다.Due to how Microsoft Windows treats text files (\n automatically gets replaced with \r\n).

4.D. 코드 페이지 지정Specifying a code page

다음 예제에서는 코드 페이지를 지정 하는 방법을 보여 줍니다.The following example show how to specify a code page.

BULK INSERT MyTable  
FROM 'D:\data.csv'  
WITH  
( CODEPAGE = '65001',  
    DATAFILETYPE = 'char',  
    FIELDTERMINATOR = ','  
);  

5.E. CSV 파일에서 데이터 가져오기Importing data from a CSV file

다음 예제에서는 CSV 파일을 지정 하는 방법을 보여 줍니다.The following example show how to specify a CSV file.

BULK INSERT Sales.Invoices
FROM '\\share\invoices\inv-2016-07-25.csv'
WITH (FORMAT = 'CSV'); 

6.F. Azure blob 저장소에 파일에서 데이터 가져오기Importing data from a file in Azure blob storage

다음 예제에서는 외부 데이터 원본으로 구성 된 Azure blob 저장소 위치에 있는 csv 파일에서 데이터를 로드 하는 방법을 보여 줍니다.The following example shows how to load data from a csv file in an Azure blob storage location, which has been configured as an external data source. 이 공유 액세스 서명을 사용 하 여 데이터베이스 범위 자격 증명이 필요 합니다.This requires a database scoped credential using a shared access signature.

BULK INSERT Sales.Invoices
FROM 'inv-2017-01-19.csv'
WITH (DATA_SOURCE = 'MyAzureInvoices',
     FORMAT = 'CSV'); 

에 대 한 완료 BULK INSERT 자격 증명 및 외부 데이터 원본을 구성 하는 등 예제 참조 예의 대량 데이터에에서 액세스를 Azure Blob 저장소합니다.For complete BULK INSERT examples including configuring the credential and external data source, see Examples of Bulk Access to Data in Azure Blob Storage.

추가 예Additional Examples

다른 BULK INSERT 예는 다음 항목에서 제공 됩니다.Other BULK INSERT examples are provided in the following topics:

관련 항목:See Also

데이터 대량 가져오기 및 내보내기(SQL Server) Bulk Import and Export of Data (SQL Server)
bcp Utility bcp Utility
가져오거나 데이터 ( 내보내기 위한 서식 파일 SQL Server ) Format Files for Importing or Exporting Data (SQL Server)
INSERT(Transact-SQL) INSERT (Transact-SQL)
OPENROWSET(Transact-SQL) OPENROWSET (Transact-SQL)
대량 내보내기 또는 가져오기 (에 대 한 데이터를 준비 합니다. SQL Server ) Prepare Data for Bulk Export or Import (SQL Server)
sp_tableoption ( Transact SQL )sp_tableoption (Transact-SQL)