서식 파일을 사용하여 테이블 열을 데이터 파일 필드에 매핑(SQL Server)Use a Format File to Map Table Columns to Data-File Fields (SQL Server)

데이터 파일은 테이블의 해당 열에서 서로 다른 순서로 정렬된 필드를 포함할 수 있습니다.A data file can contain fields arranged in a different order from the corresponding columns in the table. 이 항목에서는 테이블 열과 서로 다른 순서로 필드가 정렬된 데이터 파일에 맞게 수정된 비 XML 및 XML 서식 파일에 대해 설명합니다.This topic presents both non-XML and XML format files that have been modified to accommodate a data file whose fields are arranged in a different order from the table columns. 수정된 서식 파일은 데이터 필드를 해당 테이블 열로 매핑합니다.The modified format file maps the data fields to their corresponding table columns. 추가 정보는 서식 파일 만들기(SQL Server) 를 검토하세요.Please review Create a Format File (SQL Server) for additional information.

윤곽선Outline
예제 테스트 조건Example Test Conditions
 ● 샘플 테이블 ● Sample Table
 ● 샘플 데이터 파일 ● Sample Data File
서식 파일 만들기Creating the Format Files
 ● 비 XML 서식 파일 만들기 ● Creating a Non-XML Format File
 ● 비 XML 서식 파일 수정 ● Modifying the Non-XML Format File
 ● XML 서식 파일 만들기 ● Creating an XML Format File
 ● XML 서식 파일 수정 ● Modifying the XML Format File
서식 파일을 사용하여 테이블 열을 데이터 파일 필드에 매핑Importing Data with a Format File to Map Table Columns to Data-File Field
 ● bcp 및 비 XML 서식 파일 사용 ● Using bcp and Non-XML Format File
 ● bcp 및 비 XML 서식 파일 사용 ● Using bcp and XML Format File
 ● BULK INSERT 및 비 XML 서식 파일 사용 ● Using BULK INSERT and Non-XML Format File
 ● BULK INSERT 및 XML 서식 파일 사용 ● Using BULK INSERT and XML Format File
 ● OPENROWSET(BULK...) 및 비 XML 서식 파일 사용 ● Using OPENROWSET(BULK...) and Non-XML Format File
 ● OPENROWSET(BULK...) 및 XML 서식 파일 사용 ● Using OPENROWSET(BULK...) and XML Format File

참고

비 XML 서식 파일 또는 XML 서식 파일은 bcp 유틸리티 명령, BULK INSERT 문 또는 INSERT... SELECT * FROM OPENROWSET(BULK...) 문을 사용하여 데이터 파일을 테이블에 대량으로 가져오는데 사용될 수 있습니다.Either a non-XML or XML format file can be used to bulk import a data file into the table by using a bcp utility command, BULK INSERT statement, or INSERT ... SELECT * FROM OPENROWSET(BULK...) statement. 자세한 내용은 서식 파일을 사용하여 데이터 대량 가져오기(SQL Server)를 참조하세요.For more information, see Use a Format File to Bulk Import Data (SQL Server).

예제 테스트 조건Example Test Conditions

이 항목의 수정된 서식 파일의 예는 아래 정의된 테이블 및 데이터 파일을 기준으로 합니다.The examples of modified format files in this topic are based on the table and data file defined below.

샘플 테이블Sample Table

아래 스크립트에서는 테스트 데이터베이스와 myRemap라는 테이블을 만듭니다.The script below creates a test database and a table named myRemap. Microsoft SSMS(SQL Server Management Studio)에서 다음 TRANSACT-SQL을 실행합니다.Execute the following Transact-SQL in Microsoft SQL Server Management Studio (SSMS):

CREATE DATABASE TestDatabase;
GO

USE TestDatabase;
CREATE TABLE myRemap
   (
   PersonID smallint,
   FirstName varchar(25),
   LastName varchar(30),
   Gender char(1)
   );

샘플 데이터 파일Sample Data File

아래 데이터는 FirstNameLastName 을 나타내며 myRemap테이블에 표시된 순서와 반대입니다.The data below presents FirstName and LastName in the reverse order as presented in the table myRemap. 메모장을 사용하여 빈 파일 D:\BCP\myRemap.bcp 을 만들고 다음 데이터를 삽입합니다.Using Notepad, create an empty file D:\BCP\myRemap.bcp and insert the following data:

1,Grosse,Anthony,M
2,Fatnowna,Alica,F
3,Rosenhain,Stella,F

서식 파일 만들기Creating the Format Files

myRemap.bcp 의 데이터를 myRemap 테이블로 대량으로 가져오려면 서식 파일에서 다음과 같은 작업을 수행해야 합니다.To bulk import data from myRemap.bcp into the myRemap table, the format file must do the following:

  • 첫 번째 데이터 필드를 첫 번째 열인 PersonID에 매핑합니다.Map the first data field to the first column, PersonID.
  • 두 번째 데이터 필드를 세 번째 열인 LastName에 매핑합니다.Map the second data field to the third column, LastName.
  • 세 번째 데이터 필드를 두 번째 열인 FirstName에 매핑합니다.Map the third data field to the second column, FirstName.
  • 네 번째 데이터 필드를 네 번째 열인 Gender에 매핑합니다.Map the fourth data field to the fourth column, Gender.

서식 파일을 만드는 가장 간단한 방법은 bcp 유틸리티를 사용하는 것입니다.The simplest method to create the format file is by using the bcp utility. 먼저 기존 테이블에서 기본 서식 파일을 만듭니다.First, create a base format file from the existing table. 그다음으로 실제 데이터 파일을 반영하도록 기본 서식 파일을 수정합니다.Second, modify the base format file to reflect the actual data file.

비 XML 서식 파일 만들기Creating a Non-XML Format File

자세한 내용은 비 XML 서식 파일(SQL Server) 을 검토하세요.Please review Non-XML Format Files (SQL Server) for detailed information. 다음 명령은 bcp 유틸리티 를 사용하여 myRemap.fmt의 스키마를 기반으로 비 XML 서식 파일 myRemap를 생성합니다.The following command will use the bcp utility to generate a non-xml format file, myRemap.fmt, based on the schema of myRemap. 또한 한정자 c 는 문자 데이터를 지정하고, t, 는 쉼표를 필드 종결자로 지정하며, T 는 통합 보안을 사용하여 신뢰할 수 있는 연결을 지정합니다.In addition, the qualifier c is used to specify character data, t, is used to specify a comma as a field terminator, and T is used to specify a trusted connection using integrated security. 명령 프롬프트에서 다음 명령을 입력합니다.At a command prompt, enter the following command:

bcp TestDatabase.dbo.myRemap format nul -c -f D:\BCP\myRemap.fmt -t, -T

비 XML 서식 파일 수정 Modifying the Non-XML Format File

용어는 비 XML 서식 파일의 구조 를 참조하세요.See Structure of Non-XML Format Files for terminology. 메모장에서 D:\BCP\myRemap.fmt 를 열고 다음과 같이 수정합니다.Open D:\BCP\myRemap.fmt in Notepad and perform the following modifications:

  1. 행이 myRemap.bcp의 데이터와 순서가 동일하도록 서식 파일 행 순서를 다시 정렬합니다.Re-arrange the order of the format-file rows so that the rows are in the same order as the data in myRemap.bcp.
  2. 호스트 파일 필드 순서 값이 순차적인지 확인합니다.Ensure the host file field order values are sequential.
  3. 마지막 서식 파일 행 다음에 캐리지 리턴이 있는지 확인합니다.Ensure there is a carriage return after the last format-file row.

변경 내용을 비교합니다.Compare the changes:
이전Before

13.0
4
1       SQLCHAR 0       7       ","      1     PersonID               ""
2       SQLCHAR 0       25      ","      2     FirstName              SQL_Latin1_General_CP1_CI_AS
3       SQLCHAR 0       30      ","      3     LastName               SQL_Latin1_General_CP1_CI_AS
4       SQLCHAR 0       1       "\r\n"   4     Gender                 SQL_Latin1_General_CP1_CI_AS

AfterAfter

13.0
4
1       SQLCHAR 0       7       ","      1     PersonID               ""
2       SQLCHAR 0       30      ","      3     LastName               SQL_Latin1_General_CP1_CI_AS
3       SQLCHAR 0       25      ","      2     FirstName              SQL_Latin1_General_CP1_CI_AS
4       SQLCHAR 0       1       "\r\n"   4     Gender                 SQL_Latin1_General_CP1_CI_AS

수정된 서식 파일에 이제 다음 내용이 반영됩니다.The modified format file now reflects:

  • myRemap.bcp 의 첫 번째 데이터 필드가 다음 첫 번째 열에 매핑됨: myRemap.. PersonIDThe first data field in myRemap.bcp is mapped to the first column, myRemap.. PersonID
  • myRemap.bcp 의 두 번째 데이터 필드가 다음 세 번째 열에 매핑됨: myRemap.. LastNameThe second data field in myRemap.bcp is mapped to the third column, myRemap.. LastName
  • myRemap.bcp 의 세 번째 데이터 필드가 다음 두 번째 열에 매핑됨: myRemap.. FirstNameThe third data field in myRemap.bcp is mapped to the second column, myRemap.. FirstName
  • myRemap.bcp 의 네 번째 데이터 필드가 다음 네 번째 열에 매핑됨: myRemap.. GenderThe fourth data field in myRemap.bcp is mapped to the fourth column, myRemap.. Gender

XML 서식 파일 만들기 Creating an XML Format File

자세한 내용은 XML 서식 파일(SQL Server) 을 검토하세요.Please review XML Format Files (SQL Server) for detailed information. 다음 명령은 bcp 유틸리티 를 사용하여 myRemap.xml의 스키마를 기반으로 XML 서식 파일 myRemap을 생성합니다.The following command will use the bcp utility to create an xml format file, myRemap.xml, based on the schema of myRemap. 또한 한정자 c 는 문자 데이터를 지정하고, t, 는 쉼표를 필드 종결자로 지정하며, T 는 통합 보안을 사용하여 신뢰할 수 있는 연결을 지정합니다.In addition, the qualifier c is used to specify character data, t, is used to specify a comma as a field terminator, and T is used to specify a trusted connection using integrated security. x 한정자는 XML 기반 서식 파일을 생성하는 데 사용해야 합니다.The x qualifier must be used to generate an XML-based format file. 명령 프롬프트에서 다음 명령을 입력합니다.At a command prompt, enter the following command:

bcp TestDatabase.dbo.myRemap format nul -c -x -f D:\BCP\myRemap.xml -t, -T

XML 서식 파일 수정 Modifying the XML Format File

용어는 XML 서식 파일의 스키마 구문 을 참조하세요.See Schema Syntax for XML Format Files for terminology. 메모장에서 D:\BCP\myRemap.xml를 열고 다음과 같이 수정합니다.Open D:\BCP\myRemap.xml in Notepad and perform the following modifications:

  1. 서식 파일에서 <FIELD> elements가 선언되는 순서는 이들 필드가 데이터 파일에 나열되는 순서로, ID 특성이 2이고 3인 <FIELD> elements 순서와 반대가 됩니다.The order in which the <FIELD> elements are declared in the format file is the order in which those fields appear in the data file, thus reverse the order for the <FIELD> elements with ID attributes 2 and 3.
  2. <필드 > ID 특성 값이 순차적인지 확인합니다.Ensure the <FIELD> ID attribute values are sequential.
  3. <ROW> 요소에서 <COLUMN> 요소의 순서에 따라 대량 작업에서 반환되는 순서가 정의됩니다.The order of the <COLUMN> elements in the <ROW> element defines the order in which they are returned by the bulk operation. XML 서식 파일은 각 <COLUMN> 요소에 대량 가져오기 작업의 대상 테이블에 있는 열과 관계가 없는 로컬 이름을 지정합니다.The XML format file assigns each <COLUMN> element a local name that has no relationship to the column in the target table of a bulk import operation. <COLUMN> 요소의 순서는 <RECORD> 정의에 있는 <FIELD> 요소의 순서와는 독립적입니다.The order of the <COLUMN> elements is independent of the order of <FIELD> elements in a <RECORD> definition. 각 <COLUMN> 요소는 ID가 <COLUMN> 요소의 SOURCE 특성에서 지정되는 <FIELD> 요소에 해당합니다.Each <COLUMN> element corresponds to a <FIELD> element (whose ID is specified in the SOURCE attribute of the <COLUMN> element). 따라서 <COLUMN> SOURCE에 대한 값은 버전이 필요한 특성뿐입니다.Thus, the values for <COLUMN> SOURCE are the only attributes that require revision. <COLUMN> SOURCE 특성 2와 3에 대한 순서를 반대로 설정합니다.Reverse the order for <COLUMN> SOURCE attributes 2 and 3.

변경 내용을 비교합니다.Compare the changes
이전Before

\<?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="," MAX_LENGTH="7"/>
  \<FIELD ID="2" xsi:type="CharTerm" TERMINATOR="," MAX_LENGTH="25" COLLATION="SQL_Latin1_General_CP1_CI_AS"/>
  \<FIELD ID="3" xsi:type="CharTerm" TERMINATOR="," MAX_LENGTH="30" COLLATION="SQL_Latin1_General_CP1_CI_AS"/>
  \<FIELD ID="4" xsi:type="CharTerm" TERMINATOR="\r\n" MAX_LENGTH="1" COLLATION="SQL_Latin1_General_CP1_CI_AS"/>
 </RECORD>
 <ROW>
  \<COLUMN SOURCE="1" NAME="PersonID" xsi:type="SQLSMALLINT"/>
  \<COLUMN SOURCE="2" NAME="FirstName" xsi:type="SQLVARYCHAR"/>
  \<COLUMN SOURCE="3" NAME="LastName" xsi:type="SQLVARYCHAR"/>
  \<COLUMN SOURCE="4" NAME="Gender" xsi:type="SQLCHAR"/>
 </ROW>
</BCPFORMAT>

AfterAfter

\<?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="," MAX_LENGTH="7"/>
  \<FIELD ID="2" xsi:type="CharTerm" TERMINATOR="," MAX_LENGTH="30" COLLATION="SQL_Latin1_General_CP1_CI_AS"/>
  \<FIELD ID="3" xsi:type="CharTerm" TERMINATOR="," MAX_LENGTH="25" COLLATION="SQL_Latin1_General_CP1_CI_AS"/>
  \<FIELD ID="4" xsi:type="CharTerm" TERMINATOR="\r\n" MAX_LENGTH="1" COLLATION="SQL_Latin1_General_CP1_CI_AS"/>
 </RECORD>
 <ROW>
  \<COLUMN SOURCE="1" NAME="PersonID" xsi:type="SQLSMALLINT"/>
  \<COLUMN SOURCE="3" NAME="FirstName" xsi:type="SQLVARYCHAR"/>
  \<COLUMN SOURCE="2" NAME="LastName" xsi:type="SQLVARYCHAR"/>
  \<COLUMN SOURCE="4" NAME="Gender" xsi:type="SQLCHAR"/>
 </ROW>
</BCPFORMAT>

수정된 서식 파일에 이제 다음 내용이 반영됩니다.The modified format file now reflects:

  • 필드 1 - 열 1에 해당, 다음 첫 번째 테이블 열에 매핑: myRemap.. PersonIDFIELD 1, which corresponds to COLUMN 1, is mapped to the first table column, myRemap.. PersonID
  • 필드 2 - 열 2에 해당, 다음 세 번째 테이블 열에 다시 매핑: myRemap.. LastNameFIELD 2, which corresponds to COLUMN 2, is re-mapped to the third table column, myRemap.. LastName
  • 필드 3 - 열 2에 해당, 다음 두 번째 테이블 열에 다시 매핑: myRemap.. FirstNameFIELD 3, which corresponds to COLUMN 3, is re-mapped to the second table column, myRemap.. FirstName
  • 필드 4 - 열 4에 해당, 다음 네 번째 테이블 열에 매핑: myRemap.. GenderFIELD 4, which corresponds to COLUMN 4, is mapped to the fourth table column, myRemap.. Gender

서식 파일을 사용하여 테이블 열을 데이터 파일 필드에 매핑Importing Data with a Format File to Map Table Columns to Data-File Field

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

bcp비 XML 서식 파일 사용Using bcp and Non-XML Format File

명령 프롬프트에서 다음 명령을 입력합니다.At a command prompt, enter the following command:

bcp TestDatabase.dbo.myRemap IN D:\BCP\myRemap.bcp -f D:\BCP\myRemap.fmt -T

bcpXML 서식 파일 사용Using bcp and XML Format File

명령 프롬프트에서 다음 명령을 입력합니다.At a command prompt, enter the following command:

bcp TestDatabase.dbo.myRemap IN D:\BCP\myRemap.bcp -f D:\BCP\myRemap.xml -T

BULK INSERT비 XML 서식 파일 사용Using BULK INSERT and Non-XML Format File

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

USE TestDatabase;  
GO

TRUNCATE TABLE myRemap;
BULK INSERT dbo.myRemap   
   FROM 'D:\BCP\myRemap.bcp'   
   WITH (FORMATFILE = 'D:\BCP\myRemap.fmt');  
GO  

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

BULK INSERTXML 서식 파일 사용Using BULK INSERT and XML Format File

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

USE TestDatabase;  
GO

TRUNCATE TABLE myRemap;
BULK INSERT dbo.myRemap   
   FROM 'D:\BCP\myRemap.bcp'   
   WITH (FORMATFILE = 'D:\BCP\myRemap.xml');  
GO  

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

OPENROWSET(BULK...)비 XML 서식 파일 사용Using OPENROWSET(BULK...) and Non-XML Format File

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

USE TestDatabase;
GO

TRUNCATE TABLE myRemap;
INSERT INTO dbo.myRemap
    SELECT *
    FROM OPENROWSET (
        BULK 'D:\BCP\myRemap.bcp',
        FORMATFILE = 'D:\BCP\myRemap.fmt'
        ) AS t1;
GO

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

OPENROWSET(BULK...)XML 서식 파일 사용Using OPENROWSET(BULK...) and XML Format File

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

USE TestDatabase;  
GO

TRUNCATE TABLE myRemap;
INSERT INTO dbo.myRemap 
    SELECT *
    FROM OPENROWSET (
        BULK 'D:\BCP\myRemap.bcp',
        FORMATFILE = 'D:\BCP\myRemap.xml'  
       ) AS t1;
GO

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

관련 항목:See Also

bcp Utility bcp Utility
서식 파일을 사용하여 테이블 열 건너뛰기(SQL Server) Use a Format File to Skip a Table Column (SQL Server)
서식 파일을 사용하여 데이터 필드 건너뛰기(SQL Server)Use a Format File to Skip a Data Field (SQL Server)