【问题标题】:Comments in format files格式文件中的注释
【发布时间】:2014-10-28 06:57:03
【问题描述】:

是否可以将 cmets 添加到非 XML bcp/BULK INSERT 格式文件中?

这在将这些文件视为声明性代码的情况下非常有用——因为,好吧,代码需要 cmets。

还没有尝试过任何东西,因为我只是在扔随机字符,可能会产生无法预料的后果。

明确的“否”是可以接受的答案。

【问题讨论】:

  • Marc,我找不到将 cmets 添加到文本格式文件的详细信息。也就是说,并且知道您指定了“非 XML”,我的经验是 xml 格式文件更容易理解和生成,并且您可以轻松添加 cmets。首选文本格式文件的唯一情况是您希望跳过一列,这种情况可以通过批量插入视图来解决。

标签: sql-server bulkinsert bcp


【解决方案1】:

我认为最接近明确否定答案的事实是,文档中既没有提到 cmets,也没有任何示例。我猜在 Microsoft 的档案中某处有一个规范,但它似乎没有在线提供。

我见过的非xml格式最清晰的定义就是这张图(取自Structure of Non-XML Format Files):

对我来说,这足以证明 cmets 不是格式的一部分,您的问题的答案是否定的

正如 Katherine Elizabeth Lightsey 在评论中指出的那样,使用更新的基于 XML 的格式文件可能是一个更好、更灵活的选择,而且 XML 格式几乎可以自我描述。

【讨论】:

    【解决方案2】:

    不允许在格式文件中使用 cmets 只是 bcp 的第 47 个最悲惨的事情。

    我也需要这个,而且由于我的工作流程已经在使用包装脚本,一小部分 PowerShell 可以轻松地将记录的格式文件过滤为 bcp 可以接受的临时文件:

    ...
    Get-Content $commentedformatfile |
        Where-Object { -Not $_.StartsWith("#") } |
        Set-Content "_temp.fmt"
    ...
    bcp ... -f _temp.fmt ...
    

    这种简单的机制只支持通过在行首的# 字符的 cmets,但它完全适合我。

    注意bcp barfs 甚至是空行所以你还是要注意。

    【讨论】:

      猜你喜欢
      • 2020-12-11
      • 2019-07-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多