sql-server - 将字符串数据插入 XML 列:'nil=\"true\"'
问题描述
SQL 服务器 2017
我正在尝试调试和重新设计一个 SSIS 包,该包从 Web 服务获取字符串数据,然后将其插入 SQL 表(插入 XML 类型的列)。
输入字符串数据如下所示:
<InvoiceInfo><acceptedDate nil=\"true\" /><.... more stuff...
数据的形成没有总体问题 - 全部正确终止,依此类推。但是 SQL Server 讨厌这样:nil=\"true\"。当我在 SSMS 中运行 SSIS 包生成的 SQL 时,出现以下错误:
XML 解析:第 1 行,字符 32,应为字符串文字
这可能是有充分理由的。我对 XML 了解不多,但 AFAIK 这个“\”转义并不真正属于那里。
如果我对输入字符串进行一些预处理,将 "nil=\"true\"" 替换为长度为零的字符串,它就可以工作。
最奇怪的是,当同样的 SQL 在 SSIS 包中的 ExecuteSQL 任务中运行时,它可以工作。我完全迷惑了。隐式类型转换不是问题;如果我添加一个显式 CONVERT 并在 SSMS 中运行它-
INSERT INTO TheTable(XMLcolumn) VALUES
(CONVERT(XML,'<InvoiceInfo><acceptedDate nil=\"true\" /><.... more stuff...'))
它仍然以同样的方式失败。
两个问题:
- 此 SQL 如何在 SSIS 中工作但在 SSMS 中失败?
- 这些 "nil=\"true\"" 值在 XML 中的作用是什么?
解决方案
推荐阅读
- aws-documentdb - 文档数据库是否支持“不在”
- android - 未经 Google 批准的 Android 操作
- swift - 用 12 月的时间获取月初和月底
- sql - Rails 4 如何使用高效查询查找所有过期产品的类别?
- pandas - 如何使用熊猫删除csv中的两列或多列
- git - 如何用 JGit 'git show 实现
'? - r - Ggplot 错误:have_labelled/vctrs_vctr/double
- html - 通过 CSS 在两个 div 元素之间显示内容
- testing - 使用不记名令牌 (JWT) 和自定义声明进行 Webflux 安全授权测试
- flutter - 未处理的异常:SocketException 颤动