데이터를 가져오거나 내보내기 위한 서식 파일(SQL Server)Format Files for Importing or Exporting Data (SQL Server)

SQL ServerSQL Server 테이블에 데이터를 대량으로 가져오거나 테이블의 데이터를 대량으로 내보내는 경우 서식 파일 을 사용하여 데이터를 대량으로 내보내거나 가져오는 데 필요한 모든 서식 정보를 저장할 수 있습니다.When you bulk import data into a SQL ServerSQL Server table or bulk export data from a table, you can use a format file to store all the format information that is required to bulk export or bulk import data. 여기에는 해당 테이블을 기준으로 하는 데이터 파일의 각 필드에 대한 서식 정보가 포함됩니다.This includes format information for each field in a data file relative to that table.

SQL Server 2017SQL Server 2017 두 유형의 서식 파일, 즉 XML 서식 및 비 XML 서식 파일을 지원합니다. supports two types of format files: XML formats and non-XML format files. 비 XML 서식 파일과 XML 서식 파일은 모두 데이터 파일의 각 필드에 대한 설명을 포함하며, XML 서식 파일의 경우에는 해당하는 테이블 열에 대한 설명도 포함합니다.Both non-XML format files and XML format files contain descriptions of every field in a data file, and XML format files also contain descriptions of the corresponding table columns. 일반적으로 XML 서식 파일과 비 XML 서식 파일은 서로 전환이 가능하지만Generally, XML and non-XML format files are interchangeable. 새 서식 파일에는 비 XML 서식 파일에 비해 여러 가지 장점이 있는 XML 구문을 사용하는 것이 좋습니다.However, we recommend that you use the XML syntax for new format files because they provide several advantages over non-XML format files. 자세한 내용은 XML 서식 파일(SQL Server)을 참조하세요.For more information, see XML Format Files (SQL Server).

서식 파일의 이점 Benefits of Format Files

  • 다른 데이터 형식과 맞추기 위한 편집 작업이 거의 필요 없는 데이터 파일을 작성하거나 다른 소프트웨어의 데이터 파일을 읽는 작업을 유연하게 수행할 수 있습니다.Provides a flexible system for writing data files that requires little or no editing to comply with other data formats or to read data files from other software.

  • 불필요한 데이터를 추가 또는 삭제하거나 데이터 파일에 있는 기존 데이터를 다시 정렬하지 않고도 대량의 데이터를 가져올 수 있습니다.Enables you to bulk import data without having to add or delete unnecessary data or to reorder existing data in the data file. 서식 파일은 데이터 파일의 필드와 테이블의 열이 일치하지 않을 때 특히 유용합니다.Format files are particularly useful when a mismatch exists between fields in the data file and columns in the table.

서식 파일의 예 Examples of Format Files

다음 예에서는 비 XML 서식 파일 및 XML 서식 파일의 레이아웃을 보여 줍니다.The following examples show the layout of a non-XML format file and of an XML format file. 이러한 서식 파일은 HumanResources.myTeam 예제 데이터베이스의 AdventureWorks2012AdventureWorks2012 테이블에 해당합니다.These format files correspond to the HumanResources.myTeam table in the AdventureWorks2012AdventureWorks2012 sample database. 이 테이블에는 네 개의 열, 즉 EmployeeID, Name, TitleModifiedDate가 있습니다.This table contains four columns: EmployeeID, Name, Title, and ModifiedDate.

참고

이 테이블을 만드는 방법은 HumanResources.myTeam 예제 테이블(SQL Server)을 참조하세요.For information about this table and how to create it, see HumanResources.myTeam Sample Table (SQL Server).

1.A. 비 XML 서식 파일 사용Using a non-XML format file

다음 비 XML 서식 파일은 SQL ServerSQL Server 테이블에 HumanResources.myTeam 네이티브 데이터 형식을 사용합니다.The following non-XML format file uses the SQL ServerSQL Server native data format for the HumanResources.myTeam table. 이 서식 파일은 다음 bcp 명령을 사용하여 생성됩니다.This format file was created by using the following bcp command.

bcp AdventureWorks.HumanResources.myTeam format nul -f myTeam.Fmt -n -T   
The contents of this format file are as follows: 9.0  
4  
1       SQLSMALLINT   0       2       ""   1     EmployeeID               ""  
2       SQLNCHAR      2       100     ""   2     Name                     SQL_Latin1_General_CP1_CI_AS  
3       SQLNCHAR      2       100     ""   3     Title                    SQL_Latin1_General_CP1_CI_AS  
4       SQLNCHAR      2       100     ""   4     Background               SQL_Latin1_General_CP1_CI_AS  

자세한 내용은 비 XML 서식 파일(SQL Server)을 참조하세요.For more information, see Non-XML Format Files (SQL Server).

2.B. XML 서식 파일 사용Using an XML format file

다음 XML 서식 파일은 SQL ServerSQL Server 테이블에 HumanResources.myTeam 네이티브 데이터 형식을 사용합니다.The following XML format file uses the SQL ServerSQL Server native data format for the HumanResources.myTeam table. 이 서식 파일은 다음 bcp 명령을 사용하여 생성됩니다.This format file was created by using the following bcp command.

bcp AdventureWorks.HumanResources.myTeam format nul -f myTeam.Xml -x -n -T   

서식 파일은 다음을 포함합니다.The format file contains:

 <?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="NativePrefix" LENGTH="1"/>  
  <FIELD ID="2" xsi:type="NCharPrefix" PREFIX_LENGTH="2" MAX_LENGTH="100" COLLATION="SQL_Latin1_General_CP1_CI_AS"/>  
  <FIELD ID="3" xsi:type="NCharPrefix" PREFIX_LENGTH="2" MAX_LENGTH="100" COLLATION="SQL_Latin1_General_CP1_CI_AS"/>  
  <FIELD ID="4" xsi:type="NCharPrefix" PREFIX_LENGTH="2" MAX_LENGTH="100" COLLATION="SQL_Latin1_General_CP1_CI_AS"/>  
 </RECORD>  
 <ROW>  
  <COLUMN SOURCE="1" NAME="EmployeeID" xsi:type="SQLSMALLINT"/>  
  <COLUMN SOURCE="2" NAME="Name" xsi:type="SQLNVARCHAR"/>  
  <COLUMN SOURCE="3" NAME="Title" xsi:type="SQLNVARCHAR"/>  
  <COLUMN SOURCE="4" NAME="Background" xsi:type="SQLNVARCHAR"/>  
 </ROW>  
</BCPFORMAT>  

자세한 내용은 XML 서식 파일(SQL Server)을 참조하세요.For more information, see XML Format Files (SQL Server).

서식 파일이 필요한 경우 When Is a Format File Required?

INSERT ... SELECT * FROM OPENROWSET(BULK...) 문을 사용하는 경우에는 항상 서식 파일이 필요합니다.An INSERT ... SELECT * FROM OPENROWSET(BULK...) statement always requires a format file.

  • bcp 또는 BULK INSERT의 경우 단순한 상황에서는 필요에 따라 서식 파일을 사용할 수 있으며 필수적인 경우는 많지 않습니다.For bcp or BULK INSERT, in simple situations, using a format file is optional and rarely necessary. 그러나 복잡한 대량 가져오기 상황에서는 서식 파일이 필요한 경우가 종종 있습니다.However, for complex bulk-import situations, a format file is frequently required.

    다음과 같은 경우에 서식 파일이 필요합니다.Format files are required if:

  • 동일한 데이터 파일이 스키마가 다른 여러 테이블의 원본으로 사용되는 경우The same data file is used as a source for multiple tables that have different schemas.

  • 대상 테이블의 열과 데이터 파일의 필드 개수가 다른 경우. 예를 들면 다음과 같은 경우입니다.The data file has a different number of fields that the target table has columns; for example:

    • 대상 테이블에 기본값이 정의되었거나 NULL이 허용된 열이 최소 하나 이상 포함되어 있는 경우The target table contains at least one column for which either a default value is defined or NULL is allowed.

    • 사용자에게 테이블에 있는 하나 이상의 열에 대한 SELECT/INSERT 권한이 없는 경우The users do not have SELECT/INSERT permissions on one or more columns in the table.

    • 하나의 데이터 파일이 스키마가 다른 둘 이상의 테이블에 사용되는 경우A single data file is used with two or more tables that have different schemas.

  • 데이터 파일과 테이블의 열 순서가 다른 경우The column order is different for the data file and table.

  • 데이터 파일의 열 간에 종결 문자나 접두사 길이가 다른 경우The terminating characters or prefix lengths differ among the columns of the data file.

참고

서식 파일이 없는 경우 bcp 명령이 지정한 데이터 형식 스위치(-n, -c, -w또는 -N) 또는 BULK INSERT 연산에 지정된 DATAFILETYPE 옵션의 데이터 형식을 데이터 파일의 필드를 해석하는 기본 방법으로 사용합니다.In the absence of a format file, if a bcp command specifies a data-format switch (-n, -c, -w, or -N) or a BULK INSERT operation specifies the DATAFILETYPE option, the specified data format is used as the default method of interpreting the fields of the data file.

참고 항목See Also

비 XML 서식 파일(SQL Server) Non-XML Format Files (SQL Server)
XML 서식 파일(SQL Server) XML Format Files (SQL Server)
대량 가져오기 또는 대량 내보내기를 위한 데이터 형식(SQL Server) Data Formats for Bulk Import or Bulk Export (SQL Server)