【问题标题】:Escaping the field separator in SSIS data export在 SSIS 数据导出中转义字段分隔符
【发布时间】:2018-08-07 21:30:28
【问题描述】:

我的 SQL 表包含以下数据:

╔══════════╦════════════╗
║ Column 1 ║  Column 2  ║
╠══════════╬════════════╣
║        1 ║ |Some Data ║
╚══════════╩════════════╝

然后将这些数据导出到管道 (|) 分隔的文本文件,如下所示:

1||Some Data

当我尝试使用带有格式文件的 BCP 导入此数据时,它显然失败了。

然后我尝试使用带有文本限定符的文件生成:

1|"|Some Data".

但是,这也失败了。文本限定符的目的是什么?如何告诉 bcp 使用 |" 作为第二列的字段分隔符?

【问题讨论】:

  • 作为健全性检查,您可以将文件导入 Excel 还是返回数据库?

标签: ssis bcp


【解决方案1】:

如果使用 BCP,则需要使用格式文件。还有其他答案可以提供帮助,但这是我给另一个答案的答案,其中提到了为什么需要格式文件。

SQL Server BCP Export where comma in SQL field

本质上,bcp 格式文件(-f 选项,使用它而不是 -t 选项来指定字段分隔符)允许您完全控制每个字段的分隔符。您需要将分隔符设置为 quote-your delimiter-quote。

那是....(“|”)在你的情况下。

【讨论】:

    【解决方案2】:

    看起来您正在使用 BCP,但 SSIS 标记已附加到问题中,因此以下是有关使用 SSIS 执行此过程的一些详细信息。

    • 创建平面文件连接管理器。既然你已经有了 在平面文件连接管理器编辑器上导出到文件的数据 页面,单击文件名字段旁边的浏览按钮并选择 你的文件。根据文件扩展名,您可能需要更改 浏览文件系统时的扩展属性。
    • 将格式设置为分隔,如果使用,请选择一个文本限定符, 如果这样,请检查“第一个数据行中的列名”选项 适用。
    • 在“列”窗格中,为“列”选择 Vertical Bar {|} 分隔符属性和相应的行分隔符。

    • 如果文件中没有列名,请在“高级”窗格中添加列名。 还要使用正确的数据类型。这些可能会 默认为文本数据。有关 SSIS 数据类型的更多信息和 将它们与 SQL Server 中的相应类型相匹配,请参阅此 link。确保在运行包之前预览数据。

    • 如果使用文本限定符,则仅将文本列的 TextQualified 属性设置为 true,否则确保为 false。

    • 验证运行包的帐户是否具有访问文件以及数据将加载到的表的适当权限。

    【讨论】:

      猜你喜欢
      • 2018-03-13
      • 1970-01-01
      • 1970-01-01
      • 2011-06-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-14
      相关资源
      最近更新 更多