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

다른 프로그램에서 사용할 텍스트 파일로 데이터를 대량으로 내보내거나 다른 프로그램에서 생성한 텍스트 파일에서 데이터를 대량으로 가져오는 경우 문자 형식을 사용하는 것이 좋습니다.Character format is recommended when you bulk export data to a text file that is to be used in another program or when you bulk import data from a text file that is generated by another program.

문자 형식은 모든 열에 문자 데이터 형식을 사용합니다.Character format uses the character data format for all columns. 스프레드시트 등의 다른 프로그램에서 데이터를 사용하거나 Oracle 등의 다른 데이터베이스의 데이터를 SQL ServerSQL Server 인스턴스로 복사할 때는 문자 형식으로 정보를 저장하십시오.Storing information in character format is useful when the data is used with another program, such as a spreadsheet, or when the data needs to be copied into an instance of SQL ServerSQL Server from another database vendor such as Oracle.

참고

MicrosoftMicrosoft SQL ServerSQL Server 인스턴스 및 유니코드 문자 데이터는 포함하지만 확장 문자 또는 DBCS(더블바이트 문자 집합) 문자는 포함하지 않는 데이터 파일 간에 데이터를 대량 전송하는 경우에는 유니코드 문자 형식을 사용하세요.When you bulk transfer data between instances of MicrosoftMicrosoft SQL ServerSQL Server and the data file contains Unicode character data but not any extended or DBCS characters, use the Unicode character format. 자세한 내용은 유니코드 문자 형식을 사용하여 데이터 가져오기 또는 내보내기(SQL Server)를 참조하세요.For more information, see Use Unicode Character Format to Import or Export Data (SQL Server).

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

문자 형식 사용 시 고려 사항Considerations for Using Character Format

문자 형식을 사용할 때 다음 사항을 고려하십시오.When using 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).

  • 기본적으로 문자 모드의 데이터를 대량으로 내보내거나 대량으로 가져오기 전에 다음 변환이 수행됩니다.By default, before the bulk export or import of character-mode data, the following conversions are performed:

    대량 작업의 방향Direction of bulk operation 변환Conversion
    내보내기Export 데이터를 문자 표시로 변환합니다.Converts data to character representation. 명시적으로 요청한 경우 문자 열에 요청한 코드 페이지로 데이터를 변환합니다.If explicitly requested, the data is converted to the requested code page for character columns. 코드 페이지를 지정하지 않으면 클라이언트 컴퓨터의 OEM 코드 페이지를 사용하여 문자 데이터를 변환합니다.If no code page is specified, the character data is converted by using the OEM code page of the client computer.
    가져오기Import 필요한 경우 먼저 문자 데이터를 네이티브 표시로 변환하고 클라이언트의 코드 페이지에서 대상 열의 코드 페이지로 문자 데이터를 변환합니다.Converts character data to native representation, when necessary, and translates the character data from the client's code page to the code page of the target column(s).
  • 변환 작업 중에 확장 문자가 손실되는 것을 방지하려면 유니코드 문자 형식을 사용하거나 코드 페이지를 지정하십시오.To prevent loss of extended characters during conversion, either use Unicode character format or specify a code page.

  • 문자 서식 파일로 저장되는 모든 sql_variant 데이터는 메타데이터 없이 저장됩니다.Any sql_variant data that is stored in a character-format file is stored without metadata. 각 데이터 값은 암시적 데이터 변환 규칙에 따라 char 로 변환되며Each data value is converted to char format, according to the rules of implicit data conversion. sql_variant 열로 데이터를 가져오는 경우 char로 변환됩니다.When imported into a sql_variant column, the data is imported as char. sql_variant 이외의 데이터 형식으로 열에 가져오는 경우 해당 데이터는 char에서 암시적 변환을 거칩니다.When imported into a column with a data type other than sql_variant, the data is converted from char by using implicit conversion. 데이터 변환에 대한 자세한 내용은 데이터 형식 변환(데이터베이스 엔진)을 참조하세요.For more information about data conversion, see Data Type Conversion (Database Engine).

  • bcp 유틸리티가 문자 형식 데이터 파일로서 money 값을 내보낼 때는 소수점 이하 4자리만 표시하며 쉼표 구분자 등 숫자 구분 기호는 사용하지 않습니다.The bcp utility exports money values as character-format data files with four digits after the decimal point and without any digit-grouping symbols such as comma separators. 예를 들어 1,234,567.123456이라는 값을 포함하는 money 열을 데이터 파일로 대량 내보내면 1234567.1235라는 문자열이 됩니다.For example, a money column that contains the value 1,234,567.123456 is bulk exported to a data file as the character string 1234567.1235.

문자 형식의 명령 옵션Command Options for Character Format

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

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

CommandCommand 옵션Option 설명Description
bcpbcp -c-c bcp 유틸리티가 문자 데이터를 사용하도록 합니다.Causes the bcp utility to use character data.
BULK INSERTBULK INSERT DATAFILETYPE ='char'DATAFILETYPE ='char' 데이터를 대량 가져올 때 문자 형식을 사용합니다.Use character format when bulk importing data.
OPENROWSETOPENROWSET 해당 사항 없음N/A 서식 파일을 사용해야 합니다.Must use a format file

*문자(-c) 데이터를 이전 버전의 SQL ServerSQL Server 클라이언트와 호환되는 형식으로 로드하려면 -V 스위치를 사용하세요.*To load character (-c) 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

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

-- Populate table
INSERT TestDatabase.dbo.myChar
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.myChar;

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

bcp TestDatabase.dbo.myChar format nul -f D:\BCP\myChar.fmt -T -c 

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

-c 스위치 및 OUT 명령.-c 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 command:

bcp TestDatabase.dbo.myChar OUT D:\BCP\myChar.bcp -T -c

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

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

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

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

REM Import data
bcp TestDatabase.dbo.myChar IN D:\BCP\myChar.bcp -T -c

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

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

-c-f 스위치와 IN 명령.-c and -f switches and IN command. 명령 프롬프트에서 다음 명령을 입력합니다.At a command prompt, enter the following command:

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

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

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

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

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

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

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

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

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

관련 작업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)
SQL Server 이전 버전으로부터 기본 및 문자 형식 데이터 가져오기Import Native and Character Format Data from Earlier Versions of SQL Server