XML 대량 로드 구성 요소를 사용하여 XML을 SQL Server로 가져오는 방법

요약

XML 대량 로드 구성 요소를 사용하여 XML로 표시된 데이터를 Microsoft SQL Server 2000 데이터베이스로 로드할 수 있습니다. 이 문서에서는 XML 데이터를 데이터베이스 테이블로 로드하는 데 필요한 단계에 대해 설명합니다.

참고 SQL Server 2005를 사용하는 경우 SQL Server 2005 온라인 설명서의 "XML Bulk Load Examples" 항목을 참조하십시오.

요구 사항

이 문서의 단계를 수행하려면 아래와 같은 조건을 갖추어야 합니다.
  • XML for SQL Server 2000(SQLXML) 웹 릴리스 1 이상
필요한 사전 지식:
  • XML에 대한 지식

데이터를 수신하는 테이블 만들기

다음 단계를 수행하여 XML 대량 로드 구성 요소에서 처리하는 데이터를 수신하는 테이블을 만듭니다.
  1. SQL Server에서 MyDatabase라는 데이터베이스를 만듭니다.
  2. SQL 쿼리 분석기를 연 다음 데이터베이스를 MyDatabase로 변경합니다.
  3. 쿼리 분석기에서 다음 SQL 문을 실행하여 MyDatabaseCustomer 테이블을 만듭니다.
    USE MyDatabase
    CREATE TABLE Customer (
    CustomerId INT PRIMARY KEY,
    CompanyName NVARCHAR(20),
    City NVARCHAR(20))

XML 데이터 원본 파일 만들기

다음은 예제 데이터 원본 코드입니다. 이 XML을 메모장에 붙여넣은 다음 C:/Customers.xml 파일로 저장합니다.
<ROOT>
<Customers>
<CustomerId>1111</CustomerId>
<CompanyName>Sean Chai</CompanyName>
<City>NY</City>
</Customers>
<Customers>
<CustomerId>1112</CustomerId>
<CompanyName>Tom Johnston</CompanyName>
<City>LA</City>
</Customers>
<Customers>
<CustomerId>1113</CustomerId>
<CompanyName>Institute of Art</CompanyName>
</Customers>
</ROOT>

매핑 스키마 파일 만들기

다음은 데이터 원본 XML의 형식을 데이터베이스에 있는 Customer 테이블의 형식에 매핑하는 데 사용되는 파일입니다. 이 XML을 메모장에 붙여넣은 다음 C:/Customermapping.xml 파일로 저장합니다.
<?xml version="1.0" ?>
<Schema xmlns="urn:schemas-microsoft-com:xml-data"
xmlns:dt="urn:schemas-microsoft-com:xml:datatypes"
xmlns:sql="urn:schemas-microsoft-com:xml-sql" >

<ElementType name="CustomerId" dt:type="int" />
<ElementType name="CompanyName" dt:type="string" />
<ElementType name="City" dt:type="string" />

<ElementType name="ROOT" sql:is-constant="1">
<element type="Customers" />
</ElementType>

<ElementType name="Customers" sql:relation="Customer">
<element type="CustomerId" sql:field="CustomerId" />
<element type="CompanyName" sql:field="CompanyName" />
<element type="City" sql:field="City" />
</ElementType>

</Schema>

XML 대량 로드 구성 요소를 실행하는 VBScript 프로그램 만들기

다음은 "매핑 스키마 파일 만들기" 절에 설명된 매핑 스키마를 사용하여 "XML 데이터 원본 파일 만들기" 절에서 만든 세 레코드를 "데이터를 수신하는 테이블 만들기" 절에서 만든 테이블에 삽입하는 XML 대량 로드 구성 요소를 사용하는 스크립트입니다. 이 VBScript 코드를 메모장에 붙여넣은 다음 C:\Insertcustomers.vbs 파일로 저장합니다.
Set objBL = CreateObject("SQLXMLBulkLoad.SQLXMLBulkLoad")
objBL.ConnectionString = "provider=SQLOLEDB.1;data source=MySQLServer;database=MyDatabase;uid=MyAccount;pwd=MyPassword"
objBL.ErrorLogFile = "c:\error.log"
objBL.Execute "c:\customermapping.xml", "c:\customers.xml"
Set objBL = Nothing
스크립트가 현재 사용자의 SQL Server 설치에서 작동하도록 코드의 두 번째 줄에 있는 ConnectionString 자격 증명을 수정합니다. 두 번째 줄을 수정하지 않으면 스크립트 실행 후 다음과 같은 오류 메시지가 나타납니다.
데이터 원본에 연결하는 동안 오류가 발생했습니다.

VBScript 프로그램 실행

VBScript 프로그램 C:\Insertcustomers.vbs를 실행하여 세 고객 레코드를 Customer 테이블에 삽입합니다.

작동 여부 확인

SQL 쿼리 분석기에서 MyDatabase 데이터베이스로 전환한 후 다음 쿼리를 실행합니다.
SELECT * FROM Customer
이제 "XML 데이터 원본 파일 만들기" 절에서 만든 세 레코드가 Customer 테이블에 존재합니다.

다른 방법

XML 대량 로드 구성 요소로 수행할 수 있는 다른 작업은 다음과 같습니다.
  • XML 스키마 파일에 지정된 관계를 사용하여 XML 문서를 여러 테이블에 매핑
  • 대량 로드 전에 테이블 스키마 생성
  • 스트림에서 대량 로드
  • 오버플로 열의 대량 로드



참조

SQLXML 온라인 설명서 항목: "Performing Bulk Load of XML Data"





Microsoft 제품 관련 기술 전문가들과 온라인으로 정보를 교환하시려면 Microsoft 뉴스 그룹에 참여하시기 바랍니다.
속성

문서 ID: 316005 - 마지막 검토: 2011. 5. 17. - 수정: 1

피드백