在SSIS数据导出中转义字段分隔符

时间:2018-08-07 21:30:28

标签: ssis bcp

我的SQL表包含以下数据:

Name, Geohash, Value
Bob, 9mu9ecy, 3
Nancy, 9mu9ecy, 8
Nancy, 9mu9eff, 5
Tom, 9mu9ege, 5
Bob, 9mu9ege, 5
Mike, 9mu9emx, 8
Tom, 9mu9ep3, 7
Nancy, 9mu9epf, 2
Nancy, 9mu9epp, 4
...

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

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

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

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

1||Some Data

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

2 个答案:

答案 0 :(得分:0)

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

SQL Server BCP Export where comma in SQL field

基本上,bcp格式文件(-f选项,使用它代替-t选项来指定字段定界符)使您可以完全控制每个字段的定界符。您需要将定界符设置为quote-your delimiter-quote。

那是....(“ |”)。

答案 1 :(得分:0)

您似乎正在使用BCP,但是问题附带了SSIS标记,因此以下是有关使用SSIS进行此过程的一些详细信息。

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

  • 在“高级”窗格中,添加列名(如果文件中没有)。 还要确保使用了正确的数据类型。这些可能 默认为文本数据。有关SSIS数据类型和 将它们与SQL Server中的相应类型进行匹配,请参阅此 link。确保也预览该数据,然后再运行该软件包。

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

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