2009-04-01 4 views
8

꽤 직접적인 직접 경로가 있습니까? (즉, SQL Server가 XML을 읽을 수 있습니까?)XML 데이터를 SQL Server에 저장하는 가장 좋은 방법은 무엇입니까?

또는 XML을 구문 분석하고 일반적인 방식으로 ADO.Net을 통해 개별 행 또는 일괄 업데이트로 전송하는 것이 가장 좋습니다.

큰 복잡한 저장 프로 시저가 포함될 수있는 솔루션이있을 수 있음을 알고 있습니다. 반면에 완전히 반대하지는 않지만 대부분의 비즈니스 로직을 C# 코드로 사용하는 경향이 있습니다. SQLXMLBulkLoad를 사용하여 솔루션을 보았지만 상당히 복잡한 SQL 코드가 필요했습니다.

참고로, 각 (문자열 및 int)에 대해 약 50 개의 작은 데이터가있는 한 번에 약 100 개의 행으로 작업 할 것입니다. 이것은 결국 일괄 작업이 될 것입니다.

제공 할 수있는 모든 코드 스 니펫을 매우 높이 평가할 수 있습니다.

+0

SQL Server 버전은 무엇입니까? –

+0

2008 년에 액세스 할 수 있지만 주로 SQL Server 2005를 사용합니다. – alchemical

답변

10

SQL Server 2005 이상에는 XML을 형식이 지정되지 않거나 XSD 스키마로 입력 할 수있는 "XML"이라는 데이터 형식이 있습니다.

기본적으로 XML 리터럴 문자열에서 XML 형식의 열을 채울 수 있으므로 쉽게 일반 INSERT 문을 사용하고 XML 내용을 해당 필드에 채울 수 있습니다.

+0

일단 SQL Server에 cml을 가져 오기 위해 이것을 사용하면 SQL Server가 XML을 필드로 구문 분석합니까? 아니면 proc이나 테이블에서 수동으로이 작업을 수행해야합니까? – alchemical

+0

아니요, XML 필드로 저장됩니다. XPath 및 XQuery를 사용하여 쿼리 할 수 ​​있습니다. 정확히 무엇을 찾고 있니? –

4

OPENXML 및 저장 프로 시저 sp_xml_preparedocument를 사용하면 XML을 쉽게 행 집합으로 변환 할 수 있습니다.

+0

SQL Server 2005 이후 sp_xml_preparedocument를 절대로 사용하지 마십시오 !! – gbn

+0

왜 안 되니? 대체품이 있습니까? – alchemical

2

당신은 SQL 서버 2008 (또는 2005)를 사용하는 경우, 그것은 xml 기본 데이터 유형을 가지고 마크. XSD 스키마를 xml 변수와 연결하고 xml 유형의 열에 직접 삽입 할 수 있습니다.

0

:

당신은 값 또는

일부 뻔뻔한 플러그 속성 여부, 당신이 원하는 방법을 무너 뜨리는 노드, 값 및 쿼리 방법을 사용 XML 데이터와 XML 문서는 다른 의미를 가질 수 있습니다. xml 유형이 데이터에 적합 할 때 서식을 저장하지 않으므로 (공백을 제거함) 일부 구성 파일 (예 : 구성 파일)에서 가장 좋은 옵션은 nvarchar입니다.