네이티브 형식을 사용하여 데이터 가져오기 및 내보내기(SQL Server)Use Native Format to Import or Export Data (SQL Server)

확장/DBCS(더블바이트 문자 집합) 문자가 포함되어 있지 않은 데이터 파일을 사용하여 여러 개의 SQL ServerSQL Server 인스턴스 간에 데이터를 대량 전송할 때는 네이티브 형식을 사용하는 것이 바람직합니다.Native format is recommended when you bulk transfer data between multiple instances of SQL ServerSQL Server using a data file that does not contain any extended/double-byte character set (DBCS) characters.

참고

확장 또는 DBCS 문자가 포함되어 있는 데이터 파일을 사용하여 여러 개의 SQL ServerSQL Server 인스턴스 간에 데이터를 대량 전송하려면 유니코드 네이티브 형식을 사용해야 합니다.To bulk transfer data between multiple instances of SQL ServerSQL Server by using a data file that contains extended or DBCS characters, you should use the Unicode native format. 자세한 내용은 유니코드 네이티브 형식을 사용하여 데이터 가져오기 또는 내보내기(SQL Server)을 참조하세요.For more information, see Use Unicode Native Format to Import or Export Data (SQL Server).

네이티브 형식은 데이터베이스의 원래 데이터 형식을 유지합니다.Native format maintains the native data types of a database. 네이티브 형식은 SQL ServerSQL Server 테이블 간에 데이터를 빠르게 전송하기 위한 형식입니다.Native format is intended for high-speed data transfer of data between SQL ServerSQL Server tables. 서식 파일을 사용할 경우 원본 및 대상 테이블의 형식이 동일할 필요가 없습니다.If you use a format file, the source and target tables do not need to be identical. 데이터 전송은 두 단계로 이루어집니다.The data transfer involves two steps:

  1. 원본 테이블에서 데이터 파일로 데이터 대량 내보내기Bulk exporting the data from a source table into a data file

  2. 데이터 파일에서 대상 테이블로 데이터 대량 가져오기Bulk importing the data from the data file into the target table

형식이 동일한 테이블에서는 네이티브 형식을 사용하여 문자 형식의 불필요한 변환을 없애고 시간과 공간을 절약할 수 있습니다.The use of native format between identical tables avoids unnecessary conversion of data types to and from character format, saving time and space. 이때 최적의 전송 속도를 얻기 위해 데이터 형식을 거의 검사하지 않습니다.To achieve the optimum transfer rate, however, few checks are performed regarding data formatting. 로드된 데이터와 관련된 문제를 방지하려면 다음 제한 사항 목록을 참조하십시오.To prevent problems with the loaded data, see the following restrictions list.

항목 내용In this Topic:
제한 사항Restrictions
bcp의 네이티브 형식 데이터 처리 방법How bcp Handles Data in Native Format
네이티브 형식의 명령 옵션Command Options for Native Format
예제 테스트 조건Example Test Conditions

 ● 샘플 테이블 ● Sample Table
 ● 샘플 비 XML 서식 파일 ● Sample Non-XML Format File
Examples
 ● bcp 및 원시 형식을 사용하여 데이터 내보내기 ● Using bcp and Native Format to Export Data
 ● bcp 및 원시 형식을 사용하여 서식 파일 없이 데이터 가져오기 ● Using bcp and Native Format to Import Data without a Format File
 ● bcp 및 원시 형식을 사용하여 XML 이외의 서식 파일과 함께 데이터 가져오기 ● Using bcp and Native Format to Import Data with a Non-XML Format File
 ● 서식 파일 없이 BULK INSERT 및 원시 형식 사용 ● Using BULK INSERT and Native Format without a Format File
 ● XML 이외의 서식 파일과 함께 BULK INSERT 및 원시 형식 사용하기 ● Using BULK INSERT and Native Format with a Non-XML Format File
 ● XML 이외의 서식 파일과 함께 OPENROWSET 및 원시 형식 사용하기 ● Using OPENROWSET and Native Format with a Non-XML Format File
관련 태스크Related Tasks

제한 사항Restrictions

데이터를 네이티브 형식으로 가져오려면 다음 사항을 확인하십시오.To import data in native format successfully, ensure that:

  • 데이터 파일이 네이티브 형식인지 여부The data file is in native format.

  • 대상 테이블이 데이터 파일과 호환되는지 여부(예: 올바른 열 수, 데이터 형식, 길이, NULL 상태 등). 호환되지 않을 경우 각 필드를 해당 열에 매핑하기 위해 서식 파일을 사용해야 합니다.Either the target table must be compatible with the data file (having the correct number of columns, data type, length, NULL status, and so forth), or you must use a format file to map each field to its corresponding columns.

    참고

    대상 테이블과 형식이 일치하지 않는 파일의 데이터를 가져오면 가져오기 작업에 성공하더라도 대상 테이블에 삽입된 데이터 값이 올바르지 않을 가능성이 높습니다.If you import data from a file that is mismatched with the target table, the import operation might succeed but the data values inserted into the target table are likely to be incorrect. 이는 파일의 데이터가 대상 테이블의 서식을 사용하여 해석되기 때문입니다.This is because the data from the file is interpreted by using the format of the target table. 따라서 형식이 일치하지 않으면 잘못된 값이 삽입됩니다.Therefore, any mismatch results in the insertion of incorrect values. 하지만 어떤 경우에도 이러한 불일치가 데이터베이스와의 논리적 또는 물리적 불일치를 유발하지는 않습니다.However, under no circumstances can such a mismatch cause logical or physical inconsistencies in the database.

    서식 파일 사용에 대한 자세한 내용은 데이터를 가져오거나 내보내기 위한 서식 파일(SQL Server)을 참조하세요.For information on using format files, see Format Files for Importing or Exporting Data (SQL Server).

    데이터를 성공적으로 가져온 경우 대상 테이블은 손상되지 않습니다.A successful import will not corrupt the target table.

bcp의 네이티브 형식 데이터 처리 방법How bcp Handles Data in Native Format

이 섹션에서는 bcp 유틸리티가 데이터를 네이티브 형식으로 내보내고 가져오는 방법에 대한 특별한 고려 사항에 대해 설명합니다.This section discusses special considerations for how the bcp utility exports and imports data in native format.

  • 문자가 아닌 데이터Noncharacter data

    bcp 유틸리티SQL ServerSQL Server 내부 이진 데이터 형식을 사용하여 문자가 아닌 테이블의 데이터를 데이터 파일에 기록합니다.The bcp utility uses the SQL ServerSQL Server internal binary data format to write noncharacter data from a table to a data file.

  • char 또는 varchar 데이터char or varchar data

    bcp 는 각 char 또는 varchar 필드의 처음 부분에 접두사 길이를 추가합니다.At the beginning of each char or varchar field, bcp adds the prefix length.

    중요

    기본 모드를 사용하면 기본적으로 bcp 유틸리티SQL ServerSQL Server 의 문자를 데이터 파일에 복사하기 전에 OEM 문자로 변환합니다.When native mode is used, by default, the bcp utility converts characters from SQL ServerSQL Server to OEM characters before it copies them to a data file. 반대로 데이터 파일의 문자를 테이블에 대량으로 가져올 때는 bcp 유틸리티 SQL ServerSQL Server 가 문자를 ANSI 문자로 변환합니다.The bcp utility converts characters from a data file to ANSI characters before it bulk imports them into a SQL ServerSQL Server table. 이러한 변환 과정에서 확장 문자 데이터가 손실될 수 있습니다.During these conversions, extended character data can be lost. 확장 문자의 경우 유니코드 네이티브 형식을 사용하거나 코드 페이지를 지정하십시오.For extended characters, either use Unicode native format or specify a code page.

  • sql_variant 데이터sql_variant data

    sql_variant 데이터가 네이티브 형식 데이터 파일에 SQLVARIANT로 저장되면 해당 데이터는 그 특성을 모두 유지합니다.If sql_variant data is stored as a SQLVARIANT in a native-format data file, the data maintains all of its characteristics. 각 데이터 값의 데이터 형식을 기록하는 메타데이터는 데이터 값과 함께 저장됩니다.The metadata that records the data type of each data value is stored along with the data value. 이 메타데이터는 대상 sql_variant 열에 동일한 데이터 형식을 가진 데이터 값을 다시 만드는 데 사용됩니다.This metadata is used to re-create the data value with the same data type in a destination sql_variant column.

    대상 열의 데이터 형식이 sql_variant가 아닌 경우 기본적인 암시적 데이터 변환 규칙에 따라 각 데이터 값이 대상 열의 데이터 형식으로 변환됩니다.If the data type of the destination column is not sql_variant, each data value is converted to the data type of the destination column, following the normal rules of implicit data conversion. 데이터 변환 중에 오류가 발생하면 현재 일괄 처리가 롤백됩니다.If an error occurs during data conversion, the current batch is rolled back. sql_variant 열 간에 전송되는 모든 charvarchar 값에는 코드 페이지 변환 문제가 있을 수 있습니다.Any char and varchar values that are transferred between sql_variant columns may have code page conversion issues.

    데이터 변환에 대한 자세한 내용은 데이터 형식 변환(데이터베이스 엔진)을 참조하세요.For more information about data conversion, see Data Type Conversion (Database Engine).

네이티브 형식의 명령 옵션Command Options for Native Format

bcp, BULK INSERT 또는 INSERT ... SELECT * FROM OPENROWSET(BULK...)를 사용하여 테이블로 유니코드 문자 형식 데이터를 가져올 수 있습니다. bcp 명령 또는 BULK INSERT 문의 경우 문에서 데이터 형식을 지정할 수 있습니다.You can import native format data into a table using bcp, BULK INSERT or INSERT ... SELECT * FROM OPENROWSET(BULK...). For a bcp command or BULK INSERT statement, you can specify the data format in the statement. INSERT ... SELECT * FROM OPENROWSET(BULK...) 문의 경우 서식 파일에서 데이터 형식을 지정해야 합니다.For an INSERT ... SELECT * FROM OPENROWSET(BULK...) statement, you must specify the data format in a format file.

원시 형식에 대해 지원되는 명령 옵션은 다음과 같습니다.Native format is supported by the following command options:

CommandCommand 옵션Option 설명Description
bcpbcp -n bcp 유틸리티가 원시 데이터 형식을 사용하도록 합니다.Causes the bcp utility to use the native data types of the data.
BULK INSERTBULK INSERT DATAFILETYPE ='native'DATAFILETYPE ='native' 데이터의 네이티브 또는 와이드 네이티브 데이터 형식을 사용합니다.Uses the native or wide native data types of the data. 서식 파일로 데이터 형식을 지정하면 DATAFILETYPE은 필요하지 않습니다.Note that DATAFILETYPE is not needed if a format file specifies the data types.
OPENROWSETOPENROWSET 해당 사항 없음N/A 서식 파일을 사용해야 합니다.Must use a format file

*네이티브(-n) 데이터를 이전 버전의 SQL ServerSQL Server 클라이언트와 호환되는 형식으로 로드하려면 -V 스위치를 사용합니다.*To load native (-n) data to a format compatible with earlier versions of SQL ServerSQL Server clients, use the -V switch. 자세한 내용은 SQL Server 이전 버전으로부터 기본 및 문자 형식 데이터 가져오기를 참조하세요.For more information, see Import Native and Character Format Data from Earlier Versions of SQL Server.

참고

서식 파일에서 필드 단위로 서식을 지정할 수도 있습니다.Alternatively, you can specify formatting on a per-field basis in a format file. 자세한 내용은 데이터를 가져오거나 내보내기 위한 서식 파일(SQL Server)를 참조하세요.For more information, see Format Files for Importing or Exporting Data (SQL Server).

예제 테스트 조건Example Test Conditions

이 항목의 예제는 아래에 정의된 테이블 및 서식 파일을 기반으로 합니다.The examples in this topic are based on the table, and format file defined below.

샘플 테이블Sample Table

아래 스크립트는 테스트 데이터베이스인 myNative 라는 테이블을 만들고 테이블을 몇 가지 초기 값으로 채웁니다.The script below creates a test database, a table named myNative and populates the table with some initial values. Microsoft SSMS( SQL Server Management StudioSQL Server Management Studio )에서 다음 Transact-SQL을 실행합니다.Execute the following Transact-SQL in Microsoft SQL Server Management StudioSQL Server Management Studio (SSMS):

CREATE DATABASE TestDatabase;
GO

USE TestDatabase;
CREATE TABLE dbo.myNative ( 
   PersonID smallint NOT NULL,
   FirstName varchar(25) NOT NULL,
   LastName varchar(30) NOT NULL,
   BirthDate date,
   AnnualSalary money
   );

-- Populate table
INSERT TestDatabase.dbo.myNative
VALUES 
(1, 'Anthony', 'Grosse', '1980-02-23', 65000.00),
(2, 'Alica', 'Fatnowna', '1963-11-14', 45000.00),
(3, 'Stella', 'Rossenhain', '1992-03-02', 120000.00);

-- Review Data
SELECT * FROM TestDatabase.dbo.myNative;

샘플 비 XML 서식 파일Sample Non-XML Format File

SQL Server는 두 유형의 서식 파일, 즉 비 XML 서식 파일과 XML 서식 파일을 지원합니다.SQL Server support two types of format file: non-XML format and XML format. 비 XML 서식 파일은 이전 버전의 SQL Server에서 원래 지원했던 서식 파일입니다.The non-XML format is the original format that is supported by earlier versions of SQL Server. 자세한 내용은 비 XML 서식 파일(SQL Server) 을 검토하세요.Please review Non-XML Format Files (SQL Server) for detailed information. 다음 명령은 bcp 유틸리티 를 사용하여 myNative.fmt의 스키마를 기반으로 비 xml 서식 파일 myNative를 생성합니다.The following command will use the bcp utility to generate a non-xml format file, myNative.fmt, based on the schema of myNative. bcp 명령을 사용하여 서식 파일을 만들려면 데이터 파일 경로 대신 format 인수를 지정하고 nul 을 사용합니다.To use a bcp command to create a format file, specify the format argument and use nul instead of a data-file path. format 옵션에는 -f 옵션도 필요합니다.The format option also requires the -f option. 또한 이 예제에서 한정자 c 는 문자 데이터를 지정하는 데 사용되고 T 는 통합된 보안을 사용하여 신뢰할 수 있는 연결을 지정하는 데 사용됩니다.In addition, for this example, the qualifier c is used to specify character data, and T is used to specify a trusted connection using integrated security. 명령 프롬프트에서 다음 명령을 입력합니다.At a command prompt, enter the following commands:

bcp TestDatabase.dbo.myNative format nul -f D:\BCP\myNative.fmt -T -n 

REM Review file
Notepad D:\BCP\myNative.fmt

중요

비 XML 서식 파일이 캐리지 리턴\줄 바꿈으로 끝나는지 확인하세요.Ensure your non-XML format file ends with a carriage return\line feed. 그러지 않으면 다음과 같은 오류 메시지가 표시될 수 있습니다.Otherwise you will likely receive the following error message:

SQLState = S1000, NativeError = 0
Error = [Microsoft][ODBC Driver 13 for SQL Server]I/O error while reading BCP format file

Examples

아래 예제에서는 위에서 만든 데이터베이스와 서식 파일을 사용합니다.The examples below use the database, and format files created above.

bcp 및 원시 형식을 사용하여 데이터 내보내기Using bcp and Native Format to Export Data

-n 스위치 및 OUT 명령.-n switch and OUT command. 참고: 이 예제에서 만든 데이터 파일은 이후 나오는 모든 예제에서 사용됩니다.Note: the data file created in this example will be used in all subsequent examples. 명령 프롬프트에서 다음 명령을 입력합니다.At a command prompt, enter the following commands:

bcp TestDatabase.dbo.myNative OUT D:\BCP\myNative.bcp -T -n

REM Review results
NOTEPAD D:\BCP\myNative.bcp

bcp 및 원시 형식을 사용하여 서식 파일 없이 데이터 가져오기Using bcp and Native Format to Import Data without a Format File

-n 스위치 및 IN 명령.-n switch and IN command. 명령 프롬프트에서 다음 명령을 입력합니다.At a command prompt, enter the following commands:

REM Truncate table (for testing)
SQLCMD -Q "TRUNCATE TABLE TestDatabase.dbo.myNative;"

REM Import data
bcp TestDatabase.dbo.myNative IN D:\BCP\myNative.bcp -T -n

REM Review results
SQLCMD -Q "SELECT * FROM TestDatabase.dbo.myNative;"

bcp 및 원시 형식을 사용하여 XML 이외의 서식 파일과 함께 데이터 가져오기Using bcp and Native Format to Import Data with a Non-XML Format File

-n 열 간에 전송되는 모든 -f 스위치와 IN 명령.-n and -f switches and IN command. 명령 프롬프트에서 다음 명령을 입력합니다.At a command prompt, enter the following commands:

REM Truncate table (for testing)
SQLCMD -Q "TRUNCATE TABLE TestDatabase.dbo.myNative;"

REM Import data
bcp TestDatabase.dbo.myNative IN D:\BCP\myNative.bcp -f D:\BCP\myNative.fmt -T

REM Review results
SQLCMD -Q "SELECT * FROM TestDatabase.dbo.myNative;"

서식 파일 없이 BULK INSERT 및 원시 형식 사용Using BULK INSERT and Native Format without a Format File

DATAFILETYPE 인수.DATAFILETYPE argument. Microsoft SSMS( SQL Server Management StudioSQL Server Management Studio )에서 다음 Transact-SQL을 실행합니다.Execute the following Transact-SQL in Microsoft SQL Server Management StudioSQL Server Management Studio (SSMS):

TRUNCATE TABLE TestDatabase.dbo.myNative; -- for testing
BULK INSERT TestDatabase.dbo.myNative
    FROM 'D:\BCP\myNative.bcp'
    WITH (
        DATAFILETYPE = 'native'
        );

-- review results
SELECT * FROM TestDatabase.dbo.myNative;

XML 이외의 서식 파일과 함께 BULK INSERT 및 원시 형식 사용하기Using BULK INSERT and Native Format with a Non-XML Format File

FORMATFILE 인수.FORMATFILE argument. Microsoft SSMS( SQL Server Management StudioSQL Server Management Studio )에서 다음 Transact-SQL을 실행합니다.Execute the following Transact-SQL in Microsoft SQL Server Management StudioSQL Server Management Studio (SSMS):

TRUNCATE TABLE TestDatabase.dbo.myNative; -- for testing
BULK INSERT TestDatabase.dbo.myNative
   FROM 'D:\BCP\myNative.bcp'
   WITH (
        FORMATFILE = 'D:\BCP\myNative.fmt'
        );

-- review results
SELECT * FROM TestDatabase.dbo.myNative;

XML 이외의 서식 파일과 함께 OPENROWSET 및 원시 형식 사용하기Using OPENROWSET and Native Format with a Non-XML Format File

FORMATFILE 인수.FORMATFILE argument. Microsoft SSMS( SQL Server Management StudioSQL Server Management Studio )에서 다음 Transact-SQL을 실행합니다.Execute the following Transact-SQL in Microsoft SQL Server Management StudioSQL Server Management Studio (SSMS):

TRUNCATE TABLE TestDatabase.dbo.myNative;  -- for testing
INSERT INTO TestDatabase.dbo.myNative
    SELECT *
    FROM OPENROWSET (
        BULK 'D:\BCP\myNative.bcp', 
        FORMATFILE = 'D:\BCP\myNative.fmt'  
        ) AS t1;

-- review results
SELECT * FROM TestDatabase.dbo.myNative;

관련 작업Related Tasks

대량 가져오기 또는 대량 내보내기를 위한 데이터 형식을 사용하려면To use data formats for bulk import or bulk export

참고 항목See Also

bcp Utility bcp Utility
BULK INSERT(Transact-SQL) BULK INSERT (Transact-SQL)
데이터 형식(Transact-SQL) Data Types (Transact-SQL)
sql_variant(Transact-SQL) sql_variant (Transact-SQL)
SQL Server 이전 버전으로부터 기본 및 문자 형식 데이터 가져오기 Import Native and Character Format Data from Earlier Versions of SQL Server
OPENROWSET(Transact-SQL) OPENROWSET (Transact-SQL)
유니코드 네이티브 형식을 사용하여 데이터 가져오기 또는 내보내기(SQL Server)Use Unicode Native Format to Import or Export Data (SQL Server)