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

데이터 파일에는 테이블의 열 수보다 많은 필드를 둘 수 있습니다.A data file can contain more fields than the number of columns in the table. 이 항목에서는 테이블 열을 해당 데이터 필드에 매핑하고 나머지 필드는 무시하는 방법으로 데이터 파일에 더 많은 필드를 수용하도록 비 XML 서식 파일과 XML 서식 파일 모두를 수정하는 방법에 대해 설명합니다.This topic describes modifying both non-XML and XML format files to accommodate a data file with more fields by mapping the table columns to the corresponding data fields and ignoring the extra fields. 추가 정보는 서식 파일 만들기(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 a Non-XML Format File
 ● XML 서식 파일 만들기 ● Creating an XML Format File
 ● XML 서식 파일 사용 ● Modifying an XML Format File
서식 파일을 사용하여 데이터를 가져와 데이터 필드 건너뛰기Importing Data with a Format File to skip a Data 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

아래 스크립트에서는 테스트 데이터베이스와 myTestSkipField라는 테이블을 만듭니다.The script below creates a test database and a table named myTestSkipField. 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 myTestSkipField
   (
   PersonID smallint,
   FirstName varchar(25),
   LastName varchar(30)
   );

샘플 데이터 파일Sample Data File

빈 파일 D:\BCP\myTestSkipField.bcp 을 만들고 다음 데이터를 삽입합니다.Create an empty file D:\BCP\myTestSkipField.bcp and insert the following data:

1,SkipMe,Anthony,Grosse
2,SkipMe,Alica,Fatnowna
3,SkipMe,Stella,Rosenhain

서식 파일 만들기Creating the Format Files

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

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

서식 파일을 만드는 가장 간단한 방법은 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 유틸리티 를 사용하여 myTestSkipField.fmt의 스키마를 기반으로 비 XML 서식 파일 myTestSkipField를 생성합니다.The following command will use the bcp utility to generate a non-xml format file, myTestSkipField.fmt, based on the schema of myTestSkipField. 또한 한정자 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.myTestSkipField format nul -c -f D:\BCP\myTestSkipField.fmt -t, -T

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

용어는 비 XML 서식 파일의 구조 를 참조하세요.See Structure of Non-XML Format Files for terminology. 메모장에서 D:\BCP\myTestSkipField.fmt 를 열고 다음과 같이 수정합니다.Open D:\BCP\myTestSkipField.fmt in Notepad and perform the following modifications: 1) FirstName 에 대한 전체 서식 파일 행을 복사하고 그다음 줄에 FirstName 뒤에 직접 붙여 넣습니다.Copy the entire format-file row for FirstName and paste it directly after FirstName on the next line. 2) 행이 새로 생기거나 모든 후속 행의 경우 호스트 파일 필드 순서 값을 하나씩 늘립니다.Increase the host file field order value by one for the new row and all subsequent rows. 3) 데이터 파일에서 실제 필드 수 반영을 위해 열 개수 값을 늘립니다.Increase the number of columns value to reflect the actual number of fields in the data file. 3) 두 번째 서식 파일 행에서 서버 열 순서를 2 에서 0 으로 수정합니다.Modify the server column order from 2 to 0 for the second format-file row.

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

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

AfterAfter

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

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

  • 4개의 데이터 필드4 data fields
  • myTestSkipField.bcp 의 첫 번째 데이터 필드가 다음 첫 번째 열에 매핑됨: myTestSkipField.. PersonIDThe first data field in myTestSkipField.bcp is mapped to the first column, myTestSkipField.. PersonID
  • myTestSkipField.bcp 의 두 번째 데이터 필드가 어떤 열에도 매핑되지 않음The second data field in myTestSkipField.bcp is not mapped to any column.
  • myTestSkipField.bcp 의 세 번째 데이터 필드가 다음 두 번째 열에 매핑됨: myTestSkipField.. FirstNameThe third data field in myTestSkipField.bcp is mapped to the second column, myTestSkipField.. FirstName
  • myTestSkipField.bcp 의 네 번째 데이터 필드가 다음 세 번째 열에 매핑됨: myTestSkipField.. LastNameThe fourth data field in myTestSkipField.bcp is mapped to the third column, myTestSkipField.. LastName

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

자세한 내용은 XML 서식 파일(SQL Server) 을 검토하세요.Please review XML Format Files (SQL Server) for detailed information. 다음 명령은 bcp 유틸리티 를 사용하여 myTestSkipField.xml의 스키마를 기반으로 XML 서식 파일 myTestSkipField을 생성합니다.The following command will use the bcp utility to create an xml format file, myTestSkipField.xml, based on the schema of myTestSkipField. 또한 한정자 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.myTestSkipField format nul -c -x -f D:\BCP\myTestSkipField.xml -t, -T

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

용어는 XML 서식 파일의 스키마 구문 을 참조하세요.See Schema Syntax for XML Format Files for terminology. 메모장에서 D:\BCP\myTestSkipField.xml 를 열고 다음과 같이 수정합니다.Open D:\BCP\myTestSkipField.xml in Notepad and perform the following modifications: 1) 전체 두 번째 필드를 복사하고 그다음 줄에서 두 번째 필드 뒤에 직접 붙여 넣습니다.Copy the entire second field and paste it directly after the second field on the next line. 2) 새 필드 및 각 후속 필드에 대해 "FIELD ID" 값을 하나씩 늘립니다.Increase the "FIELD ID" value by 1 for the new FIELD and for each subsequent FIELD. 3) FirstNameLastName 에 대해 "COLUMN SOURCE" 값을 하나씩 늘려 수정된 매핑을 반영합니다.Increase the "COLUMN SOURCE" value by 1 for FirstName, and LastName to reflect the revised mapping.

변경 내용을 비교합니다.Compare the changes made:
이전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="\r\n" MAX_LENGTH="30" 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"/>
 </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="25" 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="30" 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="4" NAME="LastName" xsi:type="SQLVARYCHAR"/>
 </ROW>
</BCPFORMAT>

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

  • 4개의 데이터 필드4 data fields
  • 필드 1 - 열 1에 해당, 다음 첫 번째 테이블 열에 매핑: myTestSkipField.. PersonIDFIELD 1 which corresponds to COLUMN 1 is mapped to the first table column, myTestSkipField.. PersonID
  • 필드 1 - 어떤 열에도 해당되지 않음, 따라서 어떤 테이블 열에도 매핑되지 않음FIELD 2 does not correspond to any COLUMN and thus, is not mapped to any table column.
  • 필드 3 - 열 3에 해당, 다음 두 번째 테이블 열에 매핑: myTestSkipField.. FirstNameFIELD 3 which corresponds to COLUMN 3 is mapped to the second table column, myTestSkipField.. FirstName
  • 필드 4 - 열 4에 해당, 다음 세 번째 테이블 열에 매핑: myTestSkipField.. LastNameFIELD 4 which corresponds to COLUMN 4 is mapped to the third table column, myTestSkipField.. LastName

서식 파일을 사용하여 데이터를 가져와 데이터 필드 건너뛰기Importing Data with a Format File to skip a Data 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.myTestSkipField IN D:\BCP\myTestSkipField.bcp -f D:\BCP\myTestSkipField.fmt -T

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

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

bcp TestDatabase.dbo.myTestSkipField IN D:\BCP\myTestSkipField.bcp -f D:\BCP\myTestSkipField.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 myTestSkipField;
BULK INSERT dbo.myTestSkipField   
   FROM 'D:\BCP\myTestSkipField.bcp'   
   WITH (FORMATFILE = 'D:\BCP\myTestSkipField.fmt');  
GO  

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

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 myTestSkipField;
BULK INSERT dbo.myTestSkipField   
   FROM 'D:\BCP\myTestSkipField.bcp'   
   WITH (FORMATFILE = 'D:\BCP\myTestSkipField.xml');  
GO  

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

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 myTestSkipField;
INSERT INTO dbo.myTestSkipField
    SELECT *
    FROM OPENROWSET (
        BULK 'D:\BCP\myTestSkipField.bcp',
        FORMATFILE = 'D:\BCP\myTestSkipField.fmt'
        ) AS t1;
GO

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

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 myTestSkipField;
INSERT INTO dbo.myTestSkipField 
    SELECT *
    FROM OPENROWSET (
        BULK 'D:\BCP\myTestSkipField.bcp',
        FORMATFILE = 'D:\BCP\myTestSkipField.xml'  
       ) AS t1;
GO

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

관련 항목:See Also

bcp Utility bcp Utility
BULK INSERT(Transact-SQL) BULK INSERT (Transact-SQL)
OPENROWSET(Transact-SQL) OPENROWSET (Transact-SQL)
서식 파일을 사용하여 테이블 열 건너뛰기(SQL Server) Use a Format File to Skip a Table Column (SQL Server)
서식 파일을 사용하여 테이블 열을 데이터 파일 필드에 매핑(SQL Server) Use a Format File to Map Table Columns to Data-File Fields (SQL Server)