2013-10-31 4 views
0

DBUnit (Java)에서 일반적으로 발생하는 XML에서 DB에 레코드를 삽입하는 유틸리티를 만듭니다.데이터 형식을 모르는 상태에서 데이터베이스에 XML을 삽입하십시오.

쿼리를 만들 때 데이터 유형을 어떻게 관리 할 수 ​​있는지 알고 싶습니다. 예 : 직원은 테이블이고 내부 요소는 필드입니다.

<Employee> 
    <firstName>Sohail</firstName> 
    <lastName>Hussain</lastName> 
    <salary>100000</salary> 
</Employee> 

위의 XML에서 급여가 int인지 아닌지 예측할 수 없습니까? 내가 인라인 쿼리를 만드는 오전 때, 그것은, 내가 그것을 복잡하게하기 위해 XML에 좀 더 태그를 추가하지 않고이 기능을 달성 할 수있는 방법이 10000이 견적에 볼 수있는 쿼리에서

Insert into Employee(firstName, lastName, salary) 
values ('Sohail', 'Hussain', '10000') 

될 것 .

답변

0

처음 내 질문은 어떤 데이터베이스를 사용하고 있습니까?

난 당신이 쿼리를 준비하지만

Declare @XmlData XML 

Set XmlData ='<Employee> 
<firstName>Sohail</firstName> 
<lastName>Hussain</lastName> 
<salary>100000</salary> 

Declare @MapData Table (firstname varchar(100),lastname varchar(100),salary int) 

    INSERT INTO @MapData 
    SELECT 
      Tbl.Col.value('firstName[1]', 'varchar(100)'), 
      Tbl.Col.value('lastName[1]', 'varchar(100)'), 
      Tbl.Col.value('salary[1]', 'int') 
    FROM @XmlData.nodes('//Employee') Tbl(Col) 

이제 @MapData 테이블 변수의 값을 가지고 있고 당신은 당신으로 사용할 수있는 SQL 서버에서 사용할 메커니즘을 분석하는 방법을 잘 모르겠습니다 원하는

결과는 볼 수 있습니다

  select * from @MapData 

구문 분석이 실패하면 오류가 발생합니다. try catch 블록에서이 구문 분석 문을 사용하십시오. 구문 분석이 실패하면 입력 데이터가 유효하지 않음을 의미합니다.

+0

DB가 아니기 때문에 SQL Server 나 다른 DB를 사용할 수있는 인라인 쿼리를 사용하고 있습니다. 여기 예제에서는 salary int를 하드 코딩하고 있으며 SP에서와 같습니다. 우선, SQLCommand를 사용하는 C#의 XML로 인라인 쿼리를 작성하는 중입니다. –

+0

테이블의 스키마는 무엇입니까? 당신의 테이블에있는 급여 분야의 유형은 무엇입니까? 스키마를 정의 할 때 결정해야합니다. 그런 다음 삽입 쿼리를 적절하게 수정할 수 있습니다. 스키마를 정의하지 않고 테이블을 닫을 수 있습니까? –

+0

루프의 인라인 인서트보다 먼 타자 옵션 인 벌크 인서트를 수행하려고했습니다. 재설정은 귀하에게 달려 있습니다. –

관련 문제