대량 데이터 가져오기 준비(SQL Server)Prepare to Bulk Import Data (SQL Server)

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

bcp 명령, BULK INSERT 문 또는 OPENROWSET(BULK) 함수를 사용하여 데이터 파일의 데이터만 대량으로 가져올 수 있습니다.You can use the bcp command, BULK INSERT statement, or OPENROWSET(BULK) function to bulk import data from a data file only.

참고

텍스트 파일이 아닌 개체의 데이터를 대량으로 가져오는 사용자 지정 응용 프로그램을 작성할 수 있습니다.It is possible to write a custom application that bulk imports data from objects other than a text file. 메모리 버퍼에서 데이터를 대량으로 가져오려면 SQL ServerSQL Server Native Client(ODBC) API(응용 프로그래밍 인터페이스) 또는 OLE DB IRowsetFastLoad 인터페이스에 bcp 확장을 사용합니다.To bulk import data from memory buffers, use either the bcp extensions to the SQL ServerSQL Server Native Client (ODBC) application programming interface (API) or the OLE DB IRowsetFastLoad interface. C# 데이터 테이블에서 데이터를 대량으로 가져오려면 ADO.NET 대량 복사 API인 SqlBulkCopy를 사용합니다.To bulk import data from a C# data table, use the ADO.NET bulk-copy API, SqlBulkCopy.

참고

원격 테이블로 데이터를 대량으로 가져올 수 없습니다.Bulk importing data into a remote table is not supported.

데이터 파일에서 MicrosoftMicrosoft SQL ServerSQL Server인스턴스로 데이터를 대량으로 가져올 경우 다음 지침을 따르십시오.Use the following guidelines when you bulk import data from a data file to an instance of MicrosoftMicrosoft SQL ServerSQL Server:

  • 사용자 계정에 대해 필요한 권한 가져오기Obtain required permissions for your user account.

    bcp 유틸리티, BULK INSERT 문 또는 INSERT ... SELECT * FROM OPENROWSET(BULK...) 문을 사용하는 사용자 계정에는 테이블에 대해 필요한 권한(테이블 소유자가 할당)이 있어야 합니다.The user account in which you use the bcp utility, the BULK INSERT statement, or the INSERT ... SELECT * FROM OPENROWSET(BULK...) statement must have the required permissions on the table, which are assigned by the table owner. 각 방법에 필요한 사용 권한에 대한 자세한 내용은 bcp 유틸리티, OPENROWSET(Transact-SQL)BULK INSERT(Transact-SQL)를 참조하세요.For more information about permissions that are required by each method, see bcp Utility, OPENROWSET (Transact-SQL), and BULK INSERT (Transact-SQL).

  • 대량 로그 복구 모델 사용Use the bulk-logged recovery model.

    이 지침은 전체 복구 모델을 사용하는 데이터베이스에 대한 내용입니다.This guideline is for a database that uses the full recovery model. 대량 로그된 복구 모델은 인덱싱되지 않은 테이블( )로 대량 작업을 수행할 때 유용합니다.The bulk-logged recovery model is useful when performing bulk operations into an unindexed table (a heap). 대량 로그 복구는 로그 행 삽입을 수행하지 않으므로 대량 로그 복구를 사용하면 트랜잭션 로그의 공간 부족 문제를 방지할 수 있습니다.Using bulk-logged recovery helps prevent the transaction log from running out of space because bulk-logged recovery does not perform log row inserts. 대량 로그된 복구 모델에 대한 자세한 내용은 복구 모델(SQL Server)을 참조하세요.For more information about the bulk-logged recovery model, see Recovery Models (SQL Server).

    대량 가져오기 작업을 수행하기 바로 전에 대량 로그 복구 모델을 사용하여 데이터베이스를 변경하는 것이 좋습니다.We recommend that you change the database to use the bulk-logged recovery model immediately before the bulk import operation. 변경한 직후에는 데이터베이스를 전체 복구 모델로 다시 설정해야 합니다.Immediately afterwards, you should reset the database to the full recovery model. 자세한 내용은 데이터베이스 복구 모델 보기 또는 변경(SQL Server)을 참조하세요.For more information, see View or Change the Recovery Model of a Database (SQL Server).

    참고

    대량 가져오기 작업 동안의 로깅을 최소화하는 방법은 대량 가져오기의 최소 로깅을 위한 선행 조건을 참조하세요.more information about how to minimize logging during bulk import operations, see Prerequisites for Minimal Logging in Bulk Import.

  • 데이터를 대량으로 가져온 후 백업Back up after bulk importing data.

    단순 복구 모델을 사용하는 데이터베이스의 경우 대량 가져오기 작업이 완료된 후 전체 또는 차등 백업을 수행하는 것이 좋습니다.For a database that uses the simple recovery model, we recommend that you take a full or differential backup after the bulk-import operation finishes. 자세한 내용은 전체 데이터베이스 백업 만들기(SQL Server) 또는 차등 데이터베이스 백업 만들기(SQL Server)를 참조하세요.For more information, see Create a Full Database Backup (SQL Server) or Create a Differential Database Backup (SQL Server).

    대량 로그 복구 모델 또는 전체 복구 모델의 경우에는 로그 백업으로 충분합니다.For the bulk-logged recovery model or full recovery model, a log backup is enough. 자세한 내용은 트랜잭션 로그 백업(SQL Server)을 참조하세요.For more information, see Transaction Log Backups (SQL Server).

  • 대규모 대량 가져오기의 성능 향상을 위해 테이블 인덱스 삭제Drop table indexes to improve performance for large bulk imports.

    이 지침은 이미 테이블에 있는 데이터에 비해 많은 양의 데이터를 가져오는 경우에 대한 내용입니다.This guideline is for when you are importing a large amount of data compared to the amount of data that is already in the table. 이 경우 대량 가져오기 작업을 수행하기 전에 테이블의 인덱스를 삭제하면 성능이 매우 향상됩니다.In this case, dropping the indexes from the table before you perform the bulk-import operation can significantly increase performance.

    참고

    이미 테이블에 있는 데이터에 비해 적은 양의 데이터를 로드하는 경우에는 인덱스를 삭제하면 성능이 저하됩니다.If you are loading a small amount of data compared to the amount of data already in the table, dropping the indexes is counterproductive. 인덱스를 다시 작성하는 데 필요한 시간이 대량 가져오기 작업 동안 절약된 시간보다 길 수도 있습니다.The time required to rebuild the indexes might be longer than the time saved during the bulk-import operation.

  • 데이터 파일의 숨겨진 문자 찾기 및 제거Find and remove hidden characters in the data file.

    주로 데이터 파일의 끝 부분에 있는 숨겨진 문자는 다양한 유틸리티와 텍스트 편집기를 사용하여 표시할 수 있습니다.Many utilities and text editors display hidden characters, which are usually at the end of the data file. 대량 가져오기 작업 동안 ASCII 데이터 파일에 있는 숨겨진 문자가 문제를 일으켜 "예기치 않은 Null 발견" 오류가 발생할 수 있습니다.During a bulk-import operation, hidden characters in an ASCII data file can cause problems that cause an error of "unexpected null found". 이 경우 숨겨진 문자를 모두 찾아서 제거하면 이 문제가 해결됩니다.Finding and removing all the hidden characters should help prevent this problem.

참고 항목See Also

bcp 유틸리티를 사용하여 대량 데이터 가져오기 및 내보내기(SQL Server) Import and Export Bulk Data by Using the bcp Utility (SQL Server)
BULK INSERT 또는 OPENROWSET(BULK...)를 사용하여 데이터 대량 가져오기(SQL Server) Import Bulk Data by Using BULK INSERT or OPENROWSET(BULK...) (SQL Server)
bcp 유틸리티 bcp Utility
BULK INSERT(Transact-SQL) BULK INSERT (Transact-SQL)
대량 가져오기 또는 대량 내보내기를 위한 데이터 형식(SQL Server) Data Formats for Bulk Import or Bulk Export (SQL Server)
OPENROWSET(Transact-SQL) OPENROWSET (Transact-SQL)