2012-05-29 4 views
2

Я пытаюсь использовать XML Bulk Load (sql server 2008). Я почти там, но я думаю, что мой файл схемы ошибочен. Ошибка я получаю это:Ошибка XML Bulk Load в SQL Server

VBS Error Msg

Вот что у меня есть:

SQL структуры таблицы:

SQL Table Structure

схемы Файл:

<?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="weight" dt:type="string" /> 
    <ElementType name="fwd" dt:type="float" /> 
    <ElementType name="aft" dt:type="float" /> 

    <ElementType name="CGs" sql:is-constant="1"> 
     <element type="gross" /> 
    </ElementType> 

    <ElementType name="gross" sql:relation="tblCGLimits"> 
     <element type="weight" sql:field="weight" /> 
     <element type="fwd" sql:field="fwd" /> 
     <element type="aft"  sql:field="aft" /> 
    </ElementType> 
</Schema> 

Файл XML:

<?xml version="1.0" encoding="utf-8" ?> 
<CGs> 
    <gross weight="8000"> 
     <fwd>196.5</fwd> 
     <aft>208.88162</aft> 
    </gross> 
    <gross weight="8001"> 
     <fwd>196.495</fwd> 
     <aft>208.8825148</aft> 
    </gross> 
    <gross weight="8002"> 
     <fwd>196.49</fwd> 
     <aft>208.8834096</aft> 
    </gross> 
</CGs> 

И VBScript Я использую:

Set objBL = CreateObject("SQLXMLBulkLoad.SQLXMLBulkLoad") 
objBL.ConnectionString = "provider=SQLOLEDB.1;data source=MyServer;database=MyDB;uid=MyUser;pwd=MyPW" 
objBL.ErrorLogFile = "c:\XMLError.log" 
objBL.Execute "c:\Schema.xml", "c:\CGLimits.xml" 
Set objBL = Nothing 

ответ

2

Ваш файл XSD указывает, что весовые значения являются элементами, а не атрибуты, которые будет выглядеть следующим образом:

<?xml version="1.0" encoding="utf-8" ?> 
<CGs> 
    <gross> 
     <weight>8000</weight> 
     <fwd>196.5</fwd> 
     <aft>208.88162</aft> 
    </gross> 
    <gross> 
     <weight>8001</weight> 
     <fwd>196.495</fwd> 
     <aft>208.8825148</aft> 
    </gross> 
    <gross> 
     <weight>8002</weight> 
     <fwd>196.49</fwd> 
     <aft>208.8834096</aft> 
    </gross> 
</CGs> 

Чтобы исправить это, изменение

<element type="weight" sql:field="weight"/> 

до

<attribute type="weight" sql:field="weight"/> 

в файле XSD.

+0

Я хочу использовать значение сразу после имени тега «брутто». Я думаю, что ваш XML-сообщение приведет к дублированию тегов для веса. –

+0

@ ElJay - Я вижу. Разделите XML-элементы и атрибуты XML. Ответ исправлен. –

+0

Проблема в том, что я не могу существенно изменить файл XML. Мне нужно работать с тем, что у меня есть (там также около 5000 записей). Что я могу сделать, чтобы изменить файл Schema для работы с этим XML-файлом? –