유니코드 문자 형식을 사용하여 데이터 가져오기 및 내보내기(SQL Server)Use Unicode Character Format to Import or Export Data (SQL Server)

확장/DBCS 문자를 포함하는 데이터 파일을 사용하여 SQL ServerSQL Server의 여러 인스턴스 간에 대량 데이터 전송을 수행하는 경우에는 유니코드 문자 형식을 사용하는 것이 좋습니다.Unicode character format is recommended for bulk transfer of data between multiple instances of SQL ServerSQL Server by using a data file that contains extended/DBCS characters. 유니코드 문자 데이터 형식을 사용하면 작업을 수행 중인 클라이언트에서 사용되는 코드 페이지와 다른 코드 페이지를 사용하여 서버에서 데이터를 내보낼 수 있습니다.The Unicode character data format allows data to be exported from a server by using a code page that differs from the code page used by the client that is performing the operation. 이런 경우 유니코드 문자 형식을 사용하면 다음과 같은 이점이 있습니다.In such cases, use of Unicode character format has the following advantages:

  • 원본 및 대상 데이터가 유니코드 데이터 형식이면 유니코드 문자 형식을 사용하여 모든 문자 데이터를 보존할 수 있습니다.If the source and destination data are Unicode data types, use of Unicode character format preserves all of the character data.

  • 원본 및 대상 데이터가 유니코드 데이터 형식이 아니면 유니코드 문자 형식을 사용하여 원본 데이터에 있지만 대상에서 표현할 수 없는 확장 문자의 손실을 최소화할 수 있습니다.If the source and destination data are not Unicode data types, use of Unicode character format minimizes the loss of extended characters in the source data that cannot be represented at the destination.

항목 내용In this Topic:
유니코드 문자 형식 사용 시 고려 사항Considerations for Using Unicode Character Format
유니코드 문자 형식, bcp 및 서식 파일 사용 시 특별 고려 사항Special Considerations for Using Unicode Character Format, bcp, and a Format File
유니코드 문자 형식의 명령 옵션Command Options for Unicode Character Format
예제 테스트 조건Example Test Conditions
 ● 샘플 테이블 ● Sample Table
 ● 샘플 비 XML 서식 파일 ● Sample Non-XML Format File
Examples
 ● bcp 및 유니코드 문자 형식을 사용하여 데이터 내보내기 ● Using bcp and Unicode Character Format to Export Data
 ● bcp 및 유니코드 문자 형식을 사용하여 서식 파일 없이 데이터 가져오기 ● Using bcp and Unicode Character Format to Import Data without a Format File
 ● bcp 및 유니코드 문자 형식을 사용하여 XML 이외의 서식 파일과 함께 데이터 가져오기 ● Using bcp and Unicode Character Format to Import Data with a Non-XML Format File
 ● 서식 파일 없이 BULK INSERT 및 유니코드 문자 형식 사용 ● Using BULK INSERT and Unicode Character Format without a Format File
 ● XML 이외의 서식 파일과 함께 BULK INSERT 및 유니코드 문자 형식 사용하기 ● Using BULK INSERT and Unicode Character Format with a Non-XML Format File
 ● XML 이외의 서식 파일과 함께 OPENROWSET 및 유니코드 문자 형식 사용하기 ● Using OPENROWSET and Unicode Character Format with a Non-XML Format File
관련 태스크Related Tasks

유니코드 문자 형식 사용 시 고려 사항Considerations for Using Unicode Character Format

유니코드 문자 형식을 사용할 때 다음 사항을 고려하세요.When using Unicode character format, consider the following:

  • 기본적으로 bcp 유틸리티는 탭 문자로 문자 데이터 필드를 구분하며 줄 바꿈 문자로 레코드를 종료합니다.By default, the bcp utility separates the character-data fields with the tab character and terminates the records with the newline character. 다른 종결자를 지정하는 방법에 대한 자세한 내용은 필드 및 행 종결자 지정(SQL Server)을 참조하세요.For information about how to specify alternative terminators, see Specify Field and Row Terminators (SQL Server).

  • 유니코드 문자 형식 데이터 파일에 저장되어 있는 sql_variant 데이터는 데이터가 char 데이터 대신 nchar로 저장된다는 것을 제외하면 문자 형식 데이터 파일과 같은 방식으로 작동합니다.The sql_variant data that is stored in a Unicode character-format data file operates in the same way it operates in a character-format data file, except that the data is stored as nchar instead of char data. 문자 형식에 대한 자세한 내용은 Collation and Unicode Support을 참조하십시오.For more information about character format, see Collation and Unicode Support.

유니코드 문자 형식, bcp 및 서식 파일 사용 시 특별 고려 사항Special Considerations for Using Unicode Character Format, bcp, and a Format File

유니코드 문자 형식 데이터 파일은 유니코드 파일의 규칙을 따릅니다.Unicode character format data files follow the conventions for Unicode files. 파일의 처음 두 바이트는 16진수 0xFFFE입니다.The first two bytes of the file are hexadecimal numbers, 0xFFFE. 이 두 바이트는 바이트 순서 표시(BOM)로서 제공되며 높은 순서 바이트가 파일의 처음에 저장될지 마지막에 저장될지를 지정합니다.These bytes serve as byte-order marks (BOM), specifying whether the high-order byte is stored first or last in the file. bcp 유틸리티 에서 BOM을 잘못 해석하여 가져오기 프로세스의 일부가 실패하고 다음과 유사한 오류 메시지가 표시될 수 있습니다.The bcp Utility may misinterpret the BOM and cause part of your import process to fail; you may receive an error message similar as follows:

Starting copy...
SQLState = 22005, NativeError = 0
Error = [Microsoft][ODBC Driver 13 for SQL Server]Invalid character value for cast specification

다음과 같은 경우 BOM이 잘못 해석될 수 있습니다.The BOM may be misinterpreted under the following conditions:

  • bcp 유틸리티 가 사용되고 -w 스위치를 사용하여 유니코드 문자를 나타내는 경우The bcp Utility is used and the -w switch is used to indicate Unicode character

  • 서식 파일을 사용하는 경우A format file is used

  • 데이터 파일의 첫 번째 필드가 문자가 아닌 경우The first field in the data file is non-character

해당하는 특정 상황에 다음 해결 방법을 사용할 수 있는지 고려하세요.Consider whether any of the following workarounds may be available for your specific situation:

유니코드 문자 형식의 명령 옵션Command Options for Unicode Character Format

bcp, BULK INSERT 또는 INSERT ... SELECT * FROM OPENROWSET(BULK...)를 사용하여 테이블로 유니코드 문자 형식 데이터를 가져올 수 있습니다. bcp 명령 또는 BULK INSERT 문의 경우 문에서 데이터 형식을 지정할 수 있습니다.You can import Unicode character 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.

다음 명령 옵션에서 유니코드 문자 형식을 사용할 수 있습니다.Unicode character format is supported by the following command options:

CommandCommand 옵션Option 설명Description
bcpbcp -w-w 유니코드 문자 형식을 사용합니다.Uses the Unicode character format.
BULK INSERTBULK INSERT DATAFILETYPE ='widechar'DATAFILETYPE ='widechar' 대량으로 데이터를 가져올 때 유니코드 문자 형식을 사용합니다.Uses Unicode character format when bulk importing data.
OPENROWSETOPENROWSET 해당 사항 없음N/A 서식 파일을 사용해야 합니다.Must use a format file

참고

서식 파일에서 필드 단위로 서식을 지정할 수도 있습니다.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

아래 스크립트는 테스트 데이터베이스인 myWidechar 라는 테이블을 만들고 테이블을 몇 가지 초기 값으로 채웁니다.The script below creates a test database, a table named myWidechar 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.myWidechar ( 
    PersonID smallint NOT NULL,
    FirstName nvarchar(25) NOT NULL,
    LastName nvarchar(30) NOT NULL,
    BirthDate date,
    AnnualSalary money
);

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

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

샘플 비 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 유틸리티 를 사용하여 myWidechar.fmt의 스키마를 기반으로 비 xml 서식 파일 myWidechar를 생성합니다.The following command will use the bcp utility to generate a non-xml format file, myWidechar.fmt, based on the schema of myWidechar. 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.myWidechar format nul -f D:\BCP\myWidechar.fmt -T -w

REM Review file
Notepad D:\BCP\myWidechar.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 Unicode Character Format to Export Data

-w 스위치 및 OUT 명령.-w 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.myWidechar OUT D:\BCP\myWidechar.bcp -T -w

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

bcp 및 유니코드 문자 형식을 사용하여 서식 파일 없이 데이터 가져오기Using bcp and Unicode Character Format to Import Data without a Format File

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

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

REM Import data
bcp TestDatabase.dbo.myWidechar IN D:\BCP\myWidechar.bcp -T -w

REM Review results is SSMS

bcp 및 유니코드 문자 형식을 사용하여 XML 이외의 서식 파일과 함께 데이터 가져오기Using bcp and Unicode Character Format to Import Data with a Non-XML Format File

-w-f 스위치와 IN 명령.-w and -f switches and IN command. 이 예제에는 bcp, 서식 파일, 유니코드 문자가 포함되고 데이터 파일의 첫 번째 데이터 필드가 문자가 아니므로 해결 방법을 사용해야 합니다.A workaround will need to be used since this example involves bcp, a format file, Unicode character, and the first data field in the data file is non-character. 위의 유니코드 문자 형식, bcp 및 서식 파일 사용 시 특별 고려 사항.See Special Considerations for Using Unicode Character Format, bcp, and a Format File, above. 추가 레코드를 “더미” 레코드로 추가하여 데이터 파일 myWidechar.bcp 를 변경한 다음 -F 2 스위치를 사용하여 이 레코드를 건너뜁니다.The data file myWidechar.bcp will be altered by adding an additional record as a “dummy” record which will then be skipped with the -F 2 switch.

명령 프롬프트에서 다음 명령을 입력하고 수정 단계를 수행합니다.At a command prompt, enter the following commands and follow the modification steps:

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

REM Open data file
Notepad D:\BCP\myWidechar.bcp
REM Copy first record and then paste as new first record.  This additional record is the "dummy" record.
REM Close file.

REM Import data instructing bcp to skip dummy record with the -F 2 switch.
bcp TestDatabase.dbo.myWidechar IN D:\BCP\myWidechar.bcp -f D:\BCP\myWidechar.fmt -T -F 2

REM Review results is SSMS

REM Return data file to original state for usage in other examples
bcp TestDatabase.dbo.myWidechar OUT D:\BCP\myWidechar.bcp -T -w

서식 파일 없이 BULK INSERT 및 유니코드 문자 형식 사용Using BULK INSERT and Unicode Character 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.myWidechar; -- for testing
BULK INSERT TestDatabase.dbo.myWidechar
    FROM 'D:\BCP\myWidechar.bcp'
    WITH (
        DATAFILETYPE = 'widechar'
        );

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

XML 이외의 서식 파일과 함께 BULK INSERT 및 유니코드 문자 형식 사용하기Using BULK INSERT and Unicode Character 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.myWidechar; -- for testing
BULK INSERT TestDatabase.dbo.myWidechar
   FROM 'D:\BCP\myWidechar.bcp'
   WITH (
        FORMATFILE = 'D:\BCP\myWidechar.fmt'
        );

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

XML 이외의 서식 파일과 함께 OPENROWSET 및 유니코드 문자 형식 사용하기Using OPENROWSET and Unicode Character 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.myWidechar;  -- for testing
INSERT INTO TestDatabase.dbo.myWidechar
    SELECT *
    FROM OPENROWSET (
        BULK 'D:\BCP\myWidechar.bcp', 
        FORMATFILE = 'D:\BCP\myWidechar.fmt'  
        ) AS t1;

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

관련 작업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)
OPENROWSET(Transact-SQL) OPENROWSET (Transact-SQL)
데이터 형식(Transact-SQL) Data Types (Transact-SQL)
Collation and Unicode SupportCollation and Unicode Support