서식 파일을 사용하여 데이터 대량 가져오기(SQL Server)Use a Format File to Bulk Import Data (SQL Server)

이 항목은 다음에 적용됩니다. 예SQL Server(2008부터)예Azure SQL Database예Azure SQL Data Warehouse 예병렬 데이터 웨어하우스 THIS TOPIC APPLIES TO: yesSQL Server (starting with 2008)yesAzure SQL DatabaseyesAzure SQL Data Warehouse yesParallel Data Warehouse

이 항목에서는 대량 가져오기 작업에서 서식 파일을 사용하는 방법에 대해 설명합니다.This topic illustrates the use of a format file in bulk-import operations. 서식 파일은 데이터 파일의 필드를 테이블의 열에 매핑합니다.A format file maps the fields of the data file to the columns of the table. 추가 정보는 서식 파일 만들기(SQL Server) 를 검토하세요.Please review Create a Format File (SQL Server) for additional information.

윤곽선Outline
시작하기 전에Before You Begin
예제 테스트 조건Example Test Conditions
 ● 샘플 테이블 ● Sample Table
 ● 샘플 데이터 파일 ● Sample Data File
서식 파일 만들기Creating the Format Files
 ● 비 XML 서식 파일 만들기 ● Creating a Non-XML Format File
 ● XML 서식 파일 만들기 ● Creating an XML Format File
서식 파일을 사용하여 데이터를 대량으로 가져오기Using a Format File to Bulk Import Data
 ● 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

시작하기 전에Before You Begin

  • 유니코드 문자 데이터 파일에 서식 파일을 사용하려면 모든 입력 필드가 유니코드 텍스트 문자열(즉, 고정 크기 또는 문자 종료 유니코드 문자열)이어야 합니다.For a format file to work with a Unicode character data file, all input fields must be Unicode text strings (that is, either fixed-size or character-terminated Unicode strings).
  • SQLXML 데이터를 대량으로 내보내거나 가져오려면 서식 파일에서 다음 데이터 형식 중 하나를 사용합니다.To bulk export or import SQLXML data, use one of the following data types in your format file:
    • SQLCHAR 또는 SQLVARYCHAR(데이터를 클라이언트 코드 페이지나 데이터 정렬에 포함된 코드 페이지로 보냅니다.)SQLCHAR or SQLVARYCHAR (the data is sent in the client code page or in the code page implied by the collation)
    • SQLNCHAR 또는 SQLNVARCHAR(데이터를 유니코드로 보냅니다.)SQLNCHAR or SQLNVARCHAR (the data is sent as Unicode)
    • SQLBINARY 또는 SQLVARYBIN(데이터를 변환하지 않고 보냅니다.)SQLBINARY or SQLVARYBIN (the data is sent without any conversion).
  • Azure SQL Database 및 Azure SQL Data Warehouse는 bcp만 지원합니다.Azure SQL Database and Azure SQL Data Warehouse only support bcp. 자세한 내용은 다음을 참조하세요.For additional information, see:

예제 테스트 조건Example Test Conditions

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

샘플 테이블Sample Table

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

샘플 데이터 파일Sample Data File

메모장을 사용하여 빈 파일 D:\BCP\myFirstImport.bcp 을 만들고 다음 데이터를 삽입합니다.Using Notepad, create an empty file D:\BCP\myFirstImport.bcp and insert the following data:

1,Anthony,Grosse,1980-02-23
2,Alica,Fatnowna,1963-11-14
3,Stella,Rosenhain,1992-03-02

또는 다음 PowerShell 스크립트를 실행하여 데이터 파일을 만들고 채울 수 있습니다.Alternatively, you can execute the following PowerShell script to create and populate the data file:

cls
# revise directory as desired
$dir = 'D:\BCP\';

$bcpFile = $dir + 'MyFirstImport.bcp';

# Confirm directory exists
IF ((Test-Path -Path $dir) -eq 0)
{
    Write-Host "The path $dir does not exist; please create or modify the directory.";
    RETURN;
};

# clear content, will error if file does not exist, can be ignored
Clear-Content -Path $bcpFile -ErrorAction SilentlyContinue;

# Add data
Add-Content -Path $bcpFile -Value '1,Anthony,Grosse,1980-02-23';
Add-Content -Path $bcpFile -Value '2,Alica,Fatnowna,1963-11-14';
Add-Content -Path $bcpFile -Value '3,Stella,Rosenhain,1992-03-02';

#Review content
Get-Content -Path $bcpFile;
Invoke-Item $bcpFile;

서식 파일 만들기Creating the Format Files

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 서식 파일 만들기Creating a Non-XML Format File

자세한 내용은 비 XML 서식 파일(SQL Server) 을 검토하세요.Please review Non-XML Format Files (SQL Server) for detailed information. 다음 명령은 bcp 유틸리티 를 사용하여 myFirstImport.fmt의 스키마를 기반으로 비 xml 서식 파일 myFirstImport를 생성합니다.The following command will use the bcp utility to generate a non-xml format file, myFirstImport.fmt, based on the schema of myFirstImport. 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, 는 쉼표를 필드 종결자로 지정하는 데 사용되며, T 는 통합된 보안을 사용하여 신뢰할 수 있는 연결을 지정하는 데 사용됩니다.In addition, for this example, 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.myFirstImport format nul -c -f D:\BCP\myFirstImport.fmt -t, -T

REM Review file
Notepad D:\BCP\myFirstImport.fmt

비 XML 서식 파일 D:\BCP\myFirstImport.fmt 는 다음과 같이 표시됩니다.Your non-XML format file, D:\BCP\myFirstImport.fmt should look as follows:

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       11      "\r\n"   4     BirthDate              ""
중요

비 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

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

자세한 내용은 XML 서식 파일(SQL Server) 을 검토하세요.Please review XML Format Files (SQL Server) for detailed information. 다음 명령은 bcp 유틸리티 를 사용하여 myFirstImport.xml의 스키마를 기반으로 XML 서식 파일 myFirstImport을 생성합니다.The following command will use the bcp utility to create an xml format file, myFirstImport.xml, based on the schema of myFirstImport. 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. 서식 옵션에는 항상 -f 옵션이 필요하며 XML 서식 파일을 만들려면 -x 옵션도 지정해야 합니다.The format option always requires the -f option, and to create an XML format file, you must also specify the -x option. 또한 이 예제에서 한정자 c 는 문자 데이터를 지정하는 데 사용되고, t, 는 쉼표를 필드 종결자로 지정하는 데 사용되며, T 는 통합된 보안을 사용하여 신뢰할 수 있는 연결을 지정하는 데 사용됩니다.In addition, for this example, 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.myFirstImport format nul -c -x -f D:\BCP\myFirstImport.xml -t, -T

REM Review file
Notepad D:\BCP\myFirstImport.xml

XML 서식 파일 D:\BCP\myFirstImport.xml 은 다음과 같이 표시됩니다.Your XML format file, D:\BCP\myFirstImport.xml should look as follows:

\<?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="11"/>
 </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="BirthDate" xsi:type="SQLDATE"/>
 </ROW>
</BCPFORMAT>

서식 파일을 사용하여 데이터를 대량으로 가져오기Using a Format File to Bulk Import Data

아래 예제에서는 위에서 만든 데이터베이스, 데이터 파일 및 서식 파일을 사용합니다.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:

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

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

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

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

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

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

REM Import data
bcp TestDatabase.dbo.myFirstImport IN D:\BCP\myFirstImport.bcp -f D:\BCP\myFirstImport.xml -T

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

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

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):

USE TestDatabase;  
GO

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

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

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

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):

USE TestDatabase;  
GO

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

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

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

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):

USE TestDatabase;
GO

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

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

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

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):

USE TestDatabase;  
GO

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

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

추가 예제More examples!

서식 파일 만들기(SQL Server)Create a Format File (SQL Server)
서식 파일을 사용하여 테이블 열 건너뛰기(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)
서식 파일을 사용하여 테이블 열을 데이터 파일 필드에 매핑(SQL Server) Use a Format File to Map Table Columns to Data-File Fields (SQL Server)

참고 항목See also

bcp Utility bcp Utility
BULK INSERT(Transact-SQL) BULK INSERT (Transact-SQL)
OPENROWSET(Transact-SQL) OPENROWSET (Transact-SQL)
비 XML 서식 파일(SQL Server) Non-XML Format Files (SQL Server)
XML 서식 파일(SQL Server) XML Format Files (SQL Server)
데이터를 가져오거나 내보내기 위한 서식 파일(SQL Server) Format Files for Importing or Exporting Data (SQL Server)