Estoy tratando de usar SQLXMLBulkLoader4 del código C# en un SQL 2008 DB. Pero por alguna razón, no inserta ninguna fila a pesar de no arrojar ningún error. He utilizado el propio archivo ErrorLog de bulkloads (para comprobar si hay algún error que no lo haya bloqueado), pero no se informa ningún error.SQLXML BulkLoader no arroja ningún error pero no se insertan datos
Tengo un archivo XML que se descarga de un proveedor (básicamente una lista de productos), escribí un XSD para unir los campos a nuestro DB. No hay nada más escribiendo en esas tablas específicas, y nada más usando esos archivos.
Mi código bulkload se ve de la siguiente manera (I X'ed los valores de cadena de conexión reales):
public void Bulkload(string schemaFile, string xmlFile, string source)
{
SQLXMLBULKLOADLib.SQLXMLBulkLoad4 bulkload = new SQLXMLBULKLOADLib.SQLXMLBulkLoad4();
try
{
bulkload.ConnectionString = "Provider=sqloledb;server=X;database=X;uid=X;pwd=X";
bulkload.ErrorLogFile = k_ArticleInfoDirectory + source + "BulkLoadError.log";
bulkload.KeepIdentity = false;
bulkload.Execute(schemaFile, xmlFile);
}
catch (Exception e)
{
Console.WriteLine("Fel i BL: " + e);
throw;
}
finally
{
bulkload = null;
}
}
El XML es el siguiente (simplificada, todo lo siguiente es sólo un par de productos y campos luego más productos):
<?xml version="1.0" encoding="utf-8"?>
<GetProductsResult xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Status xmlns="http://schemas.servicestack.net/types">
<Code>0</Code>
<Message>Ok</Message>
</Status>
<NumberOfProducts xmlns="http://schemas.servicestack.net/types">9826</NumberOfProducts>
<Products xmlns="http://schemas.servicestack.net/types">
<Product>
<ProductID>1000002</ProductID>
<CreatedDate>2011-11-24 15:54</CreatedDate>
<UpdatedDate>2011-11-24 15:54</UpdatedDate>
<Title>Vi tolererar inga förlorare - klanen Kennedy</Title>
<Publisher>Piratförlaget</Publisher>
... And some more fields per Product
El XSD que escribí es similar al siguiente (de nuevo): acortada
<?xml version="1.0" encoding="iso-8859-1"?>
<xs:schema targetNamespace="http://schemas.servicestack.net/types" xmlns:xs="http://www.w3.org/2001/XMLSchema" attributeFormDefault="qualified" elementFormDefault="qualified" xmlns:sql="urn:schemas-microsoft-com:mapping-schema">
<xs:annotation>
<xs:appinfo>
<sql:relationship name="Status"
parent="tblElibProduct"
parent-key="id"
child="tblElibStatus"
child-key="product_id" />
... + Several other sql:relationships
</xs:appinfo>
</xs:annotation>
<xs:element name="GetProductsResult" sql:is-constant="1">
<xs:complexType>
<xs:sequence>
<xs:element name="Status" sql:is-constant="1">
<xs:complexType>
<xs:sequence>
<xs:element name="Code" type="xs:integer" minOccurs="0" />
<xs:element name="Message" type="xs:string" minOccurs="0" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="NumberOfProducts" type="xs:string" sql:is-constant="1"/>
<xs:element name="Products" sql:is-constant="1">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="unbounded" name="Product" sql:relation="tblElibProduct">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="1" maxOccurs="1" name="CreatedDate" type="xs:date" sql:field="created_date" />
<xs:element minOccurs="1" maxOccurs="1" name="UpdatedDate" type="xs:date" sql:field="updated_date" />
<xs:element minOccurs="1" maxOccurs="1" name="Title" type="xs:string" sql:field="title" />
Me he quedado ciego en los espacios de nombres, pero me parecen correctos. (Lea sobre muchos errores similares en los que la causa es la existencia de diferentes espacios de nombres). El código se está ejecutando desde mi computadora, tanto mi computadora como la de la base de datos tienen acceso a la carpeta de red con los archivos XML y XSD.
He intentado cambiar deliberadamente algunos nombres de campo en ambos archivos, y BulkLoader se enciende arrojando un error en el campo que acabo de cambiar.
He comparado tanto mi código BulkLoader como el XSD con ejemplos que he encontrado en la red, y no encuentro ninguna diferencia que pueda explicar este comportamiento.
Probablemente sea algo fácil que estoy pasando por alto, pero simplemente no lo estoy viendo.
Cualquier ayuda que me apunte en la dirección correcta es muy bienvenida.
¡Gracias de antemano!
(PS Lo siento si el mensaje es fuera de alguna manera, es mi primera vez publicar aquí, que hice mi investigación y sin embargo me trató de seguir las directrices sobre cómo publicar =))
¡Esa fue la entrada! Espacios de nombres de G'dang arruinando mi día ... ¡Gracias por la respuesta rápida! =) – MrWizard