- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
我正在尝试将 C# 代码中的 SQLXMLBulkLoader4 用于 SQL 2008 数据库。但由于某种原因,尽管没有抛出任何错误,但它根本没有插入任何行。我已经使用了 bulkloads 自己的 ErrorLog 文件,(检查任何可能不会导致它崩溃的错误),但没有报告任何错误。
我有一个从供应商处下载的 XML 文件(基本上是产品列表),我编写了一个 XSD 来将字段与我们的数据库相匹配。没有其他内容写入这些特定表,也没有其他内容使用这些文件。
我的 BulkLoad 代码如下所示(我 X 出实际的连接字符串值):
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;
}
}
XML 看起来像这样(精简后,下面的所有内容只是一些更多的产品字段,然后是更多的产品):
<?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
我写的 XSD 看起来像这样(再次缩短):
<?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" />
我一直盯着命名空间看,但它们对我来说是正确的。 (阅读很多类似的错误,其中不同的 namespace 是原因)。代码从我的计算机运行,我的计算机和具有数据库的计算机都可以访问包含 XML 和 XSD 文件的网络文件夹。
我曾尝试故意更改两个文件中的一些字段名称,BulkLoader 突然在我刚刚更改的字段上抛出错误。
我已经将我的 BulkLoader 代码和 XSD 与我在网上找到的示例进行了比较,但我找不到任何可以解释此行为的差异。
这可能很容易被我忽视,但我只是没有看到它。
非常欢迎为我指明正确方向的任何帮助。
提前致谢!
(P.S. 对不起,如果帖子以某种方式关闭,这是我第一次在这里发帖,但是我确实做了我的研究并且我确实尝试遵循有关如何发帖的指南=))
最佳答案
跟进您怀疑可能存在命名空间问题...
对于实例中限定的元素,命名空间确实匹配(在元素实例和元素声明之间)。
但它们并非都在另一个方向上匹配;架构声明了一个扩展名称为 {http://schemas.servicestack.net/types}GetProductsResult 的元素,但输入实例中没有出现这样的元素(有一个 GetProductsResult,但它不是命名空间限定的)。
您可能想看看如果更改 XML 以便读取第一个开始标记会发生什么
<GetProductsResult
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns="http://schemas.servicestack.net/types" >
关于c# - SQLXML BulkLoader 没有抛出任何错误但没有插入数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12822284/
我需要在 sql server 2008 中添加 xml 数据,并且我在 eclipse IDE 中使用 jre 6 作为运行时。 当我运行程序时,出现此错误: " java.lang.Abstrac
我有一个返回格式正确的 Xml string 的方法。如何将此字符串转换为 SqlXml? 最佳答案 纯 C# 中的另一种方式 - 为子孙后代: using (var memoryStream = n
我正在尝试从使用方法本地内存流初始化它的方法返回一个 SqlXml 对象。即 using (Stream memoryStream = new MemoryStream()) {
TLDR; 我正在尝试使用 SQLXML Bulk Loader (4.0) 来加载看起来像这样的 XML; 3 John Smith3 7 Slow Sid
我正在使用通用系统进行报告,该系统从数据库 View (SQL Server 2005)获取数据。在这个 View 中,我必须将一对多关系中的数据合并到一行中,并使用 priyanka.sarkar
我被赋予了一项具有挑战性的任务,即使用 Microsoft SQLServer 熟悉在 C# 中使用 SQLXML 数据类型。我的 C# 或数据库书籍都没有涵盖这一点,而且我在网上找不到任何教程。我设
我的应用程序正在使用库 SqlXML,并且我正在尝试将此应用程序发布到 Azure Web 服务。 一旦我发布它,我就会收到此错误: Retrieving the COM class factory
我正在尝试将 C# 代码中的 SQLXMLBulkLoader4 用于 SQL 2008 数据库。但由于某种原因,尽管没有抛出任何错误,但它根本没有插入任何行。我已经使用了 bulkloads 自己的
我有一个安装 sql xml 3.0 sp3 的启动任务,但这不起作用。 在我的项目中,我有一个文件夹“setup”,其中包含两个文件:setup.cmd 和 sqlxml.msi。在 setup.c
我看到 Oracle、DB2 和 SQL Server 包含一个新列 XML。我正在使用 DB2 进行开发,并且根据数据库设计,如果 xml 包含列表,您可以打破 1NF。 我认为 SQLXML 可以
我需要根据 xsd 验证 sql server 中的 xml。 xsd 太复杂,无法与 XML SCHEMA COLLECTION 一起使用,因此我正在编写一个 SQL CLR 函数来完成它。关于如何
我在 T-SQL 中有这个 XML: 1 A AB 1900-01-01T10:21:00
我正在读取一些以 Xml 格式存储在 SQL Server 数据库中的数据,我正在使用 C# 读取这些数据。我们在 System.Xml 中有一个名为 XmlText 的类型,但它不允许我将数据从 S
我有一个具有以下结构的数据表 DataColumn sourceTblCol = new DataColumn("SourceTableName", typeof(System.Data.SqlTyp
以下代码将 XML 参数传递给存储过程。 SqlXml 由字符串转换而来。 var range = GetXml(""); cmd.Parameters.Add(new SqlParameter("@
我包括这一行:using System.Data.SqlTypes.SqlXml; 以使下面的代码工作。 SqlXml sqlXml = reader["ScenarioData"].GetSqlXm
这是 SQL CLR,我只是想创建一个从 SQL 接收 XML 然后获取特定节点的值并返回它的函数: [SqlFunction] public static SqlString FnGetQuoteN
我正在使用 C# 和 MVC4 开发网络应用程序。目前我正在将字符串变量转换为 SqlXml 文件。我有一个具有这种结构的 XML 文件: 我成功地将上述文件转换为字符串,然后使用以下代码将字符
我有一些 C# 代码 (SQLCLR),它从本地机器读取一个 XML 文件到一个流中,并将它作为 SQLXML 返回给 SQL: C#代码 Stream str = File.OpenRead(xm
我找不到这个问题的书面答案。如果我使用 SqlXml 对象将 xml 传递给 StoredProc,谁负责处理我正在创建的 XmlTextReader? 到目前为止,根据我的发现,构造函数已经创建了我
我是一名优秀的程序员,十分优秀!