문서를 영문으로 보려면 영문 확인란을 선택하세요. 마우스 포인터를 텍스트 위로 이동시켜 팝업 창에서 영문 텍스트를 표시할 수도 있습니다.
번역
영문

서식 파일을 사용하여 테이블 열을 데이터 파일 필드에 매핑(SQL Server)

데이터 파일은 테이블의 해당 열에서 서로 다른 순서로 정렬된 필드를 포함할 수 있습니다. 이 항목에서는 테이블 열과 서로 다른 순서로 필드가 정렬된 데이터 파일에 맞게 수정된 비 XML 및 XML 서식 파일에 대해 설명합니다. 수정된 서식 파일은 데이터 필드를 해당 테이블 열로 매핑합니다.

참고 참고

비 XML 서식 파일 또는 XML 서식 파일은 bcp 명령, BULK INSERT 문 또는 INSERT ... SELECT * FROM OPENROWSET(BULK...) 문을 사용하여 데이터 파일을 테이블로 대량으로 가져오는 데 사용할 수 있습니다. 자세한 내용은 서식 파일을 사용하여 데이터 대량 가져오기(SQL Server)를 참조하십시오.

이 항목의 수정된 서식 파일의 예는 다음 테이블 및 데이터 파일을 기준으로 합니다.

예제 테이블

이 항목의 예에서는 dbo 스키마의 AdventureWorks2012 예제 데이터베이스에 생성된 myTestOrder라는 테이블이 필요하며 이 테이블을 만들려면 SQL Server Management Studio 쿼리 편집기에서 다음 코드를 실행합니다.

USE AdventureWorks2012;
GO
CREATE TABLE myTestOrder 
   (
   Col1 smallint,
   Col2 nvarchar(50) ,
   Col3 nvarchar(50) , 
   Col4 nvarchar(50) 
   );
GO

데이터 파일

myTestOrder-c.txt 데이터 파일에는 다음 레코드가 포함됩니다.

DataField3,DataField2,1,DataField4
DataField3,DataField2,1,DataField4
DataField3,DataField2,1,DataField4

myTestSkipCol2-c.dat에서 myTestSkipCol 테이블로 데이터를 대량으로 가져오려면 서식 파일은 첫 번째 데이터 필드를 Col3으로, 두 번째 데이터 필드를 Col2로, 세 번째 데이터 필드를 Col1로, 네 번째 데이터 필드를 Col4로 매핑해야 합니다.

해당 데이터 필드의 위치를 나타내는 열의 순서 값을 변경하면 열 매핑 순서를 변경할 수 있습니다.

다음 비 XML 서식 파일 예제에서는 myTestOrder-c.txt의 필드를 myTestOrder 테이블의 열에 매핑하는 myTestOrder.fmt 서식 파일을 보여 줍니다. 데이터 파일 및 테이블을 만드는 방법은 이 항목의 앞부분에 나오는 "예제 테이블 및 데이터 파일"을 참조하십시오. 서식 파일은 문자 데이터 형식을 사용합니다.

서식 파일에는 다음 정보가 포함됩니다.

9.0
4
1       SQLCHAR       0       100     ","     3     Col3               SQL_Latin1_General_CP1_CI_AS
2       SQLCHAR       0       100     ","     2     Col2               SQL_Latin1_General_CP1_CI_AS
3       SQLCHAR       0       7       ","     1     Col1               ""
4       SQLCHAR       0       100     "\r\n"  4     Col4               SQL_Latin1_General_CP1_CI_AS
참고참고

비 XML 서식 파일의 레이아웃에 대한 자세한 내용은 비 XML 서식 파일(SQL Server)를 참조하십시오.

다음 예에서는 BULK INSERT 문에서 비 XML 서식 파일인 myTestOrder.fmt를 사용하여 myTestOrder-c.txt 데이터 파일에서 myTestOrder 예제 테이블로 데이터를 대량으로 가져옵니다.

SQL Server Management Studio 쿼리 편집기에서 다음을 실행합니다.

USE AdventureWorks2012;
GO
BULK INSERT myTestOrder
FROM 'C:\myTestOrder-c.txt' 
WITH (formatfile='C:\myTestOrder.fmt');
GO

다음 비 XML 서식 파일 예제에서는 myTestOrder-c.txt의 필드를 myTestOrder 테이블의 열에 매핑하는 서식 파일인 myTestOrder.xml을 보여 줍니다. 데이터 파일 및 테이블을 만드는 방법은 이 항목의 앞부분에 나오는 "예제 테이블 및 데이터 파일"을 참조하십시오.

myTestOrder.xml 서식 파일에는 다음 정보가 포함됩니다.

<?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="100" COLLATION="SQL_Latin1_General_CP1_CI_AS"/>
  <FIELD ID="2" xsi:type="CharTerm" TERMINATOR="," MAX_LENGTH="100" COLLATION="SQL_Latin1_General_CP1_CI_AS"/>
  <FIELD ID="3" xsi:type="CharTerm" TERMINATOR="," MAX_LENGTH="7"/>
  <FIELD ID="4" xsi:type="CharTerm" TERMINATOR="\r\n" MAX_LENGTH="100" COLLATION="SQL_Latin1_General_CP1_CI_AS"/>
 </RECORD>
 <ROW>
  <COLUMN SOURCE="3" NAME="Col1" xsi:type="SQLSMALLINT"/>
  <COLUMN SOURCE="2" NAME="Col2" xsi:type="SQLNVARCHAR"/>
  <COLUMN SOURCE="1" NAME="Col3" xsi:type="SQLNVARCHAR"/>
  <COLUMN SOURCE="4" NAME="Col4" xsi:type="SQLNVARCHAR"/>
 </ROW>
</BCPFORMAT>
참고참고

XML 스키마의 구문 및 추가 XML 서식 파일 예제에 대한 내용은 XML 서식 파일(SQL Server)를 참조하십시오.

다음 예에서는 OPENROWSET 대량 행 집합 공급자에서 XML 서식 파일인 myTestOrder.xml을 사용하여 myTestOrder-c.txt 데이터 파일에서 myTestOrder 예제 테이블로 데이터를 대량으로 가져옵니다. INSERT… SELECT 문은 SELECT 목록에서 열 목록을 지정합니다.

SQL Server Management Studio 쿼리 편집기에서 다음 코드를 실행합니다.

USE AdventureWorks2012;
GO
INSERT INTO myTestOrder 
  SELECT Col1, Col2, Col3, Col4
      FROM  OPENROWSET(BULK  'C:\myTestOrder-c.txt',
      FORMATFILE='C:\myTestOrder.Xml'  
       ) AS t1;
GO

커뮤니티 추가 항목

추가
표시: