【问题标题】:XML export via BCP Bulk Export通过 BCP 批量导出的 XML 导出
【发布时间】:2012-01-10 10:23:19
【问题描述】:

我得到了一个包含一些 varbinary 数据的表 tblScan。我想将此表导出到 XML 文件,以便可以使用 BCP 批量插入将其插入到 SQL azure 中。 (顺便说一句,甚至可以将 varbinary 数据转换为 XML 吗??

我在做:

DECLARE @String varchar(8000)
SET @String='bcp "SELECT * FROM dbo.tblScan FOR XML RAW, XMLSCHEMA" queryout C:\Users\DAAGEU\Desktop\tblScanOutput.xml -c -T'
EXEC xp_cmdshell @String

但是我得到了这个输出错误:

还有其他解决方案吗?

【问题讨论】:

  • 错误提示无法打开连接,但我使用的是受信任的连接,还是?
  • 这看起来对您使用 Xml 所做的任何事情都没有问题,但与服务器的连接完全没有问题。更简单的查询(例如SELECT COUNT(*) FROM dbo.tblScan)是否有效?
  • 好的,所以这不是 varbinary 或 xml 的问题;让bcp 在 Azure 环境中运行是个问题。您可能需要编辑标题和问题以反映这一点。
  • 暂时不不,我只想在我的桌面上生成一个 XML 文件,稍后我将通过 BCP 批量插入将其插入到 SQL azure 中。我的问题是由于 BCP 批量导出,我无法生成 XML 文件

标签: sql tsql azure


【解决方案1】:

这实际上是 VarBinary 和 XML 的问题(在 SQL 2008 R2 中):

FOR XML EXPLICIT 和 RAW 模式目前不支持寻址 二进制数据作为 SomeComlumn 列中的 URL。删除列,或使用 BINARY BASE64 模式,或直接使用 'dbobject/TABLE[@PK1="V1"]/@COLUMN' 语法创建 URL。

快速搜索显示this post

您想以 XML 格式导出是否有特别的原因?我一直在使用默认二进制输出的 bcp,并且 VarBinary 字段没有问题。二进制文件比 XML 文件小得多。如果您不想在导出和导入之间进行任何操作,我建议您使用二进制文件。

尝试将您的查询更改为:

SET @String='bcp "SELECT * FROM dbo.tblScan FOR XML RAW, BINARY BASE64" queryout C:\Users\DAAGEU\Desktop\tblScanOutput.xml -c -T'

但是,从日志中可以看出,您当前的问题是登录。您正在使用受信任的连接,但您知道哪个身份正在运行 bcp 进程,它是由 SQL Server 引擎生成的吗?它很可能是 SQL Server 身份,我猜它无法访问数据库/表(并且很可能是本地系统或网络服务)。如果您仍想使用 SQL 查询而不是批处理文件(.bat 或 .cmd)进行此操作,我建议您使用显式登录凭据(SQL Server 身份验证)而不是受信任的连接。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-12
    • 2017-11-30
    • 1970-01-01
    • 2021-08-24
    • 1970-01-01
    相关资源
    最近更新 更多