sql-server - SQL Server BCP 导出 SQL 字段中的 where 逗号

标签 sql-server bcp

我已成功将文件导出为 CSV。我使用以下代码导出文件:

exec xp_cmdshell 'bcp "[DC_TrainEnvironment].[dbo].[HAFacilities_Master]" out "\\fspincdc01\data$\HIMSSAnalytics\Data Analyst\HG Data\Technical Documentation\HA Facilities\HAFacilities_Master.csv" -f "\\fspincdc01\data$\HIMSSAnalytics\Data Analyst\HG Data\Technical Documentation\HA Facilities\HAFacilities_Master_FORMAT.fmt" -o "\\fspincdc01\data$\HIMSSAnalytics\Data Analyst\HG Data\Technical Documentation\HA Facilities\HAFacilities_Master_LOG.txt" -T -S "HAPDBCDC02,2112"'

这很好用,但是有一个问题。有些字段中包含逗号。我正在使用这种格式文件:

enter image description here

我可以在格式文件中做什么以避免更改整个格式文件?有没有一种快速的方法来指示字段终止符在这些特定字段中不会以逗号结尾? IE。 “','“或者 ”'',''”?

感谢任何帮助。谢谢

最佳答案

如果您要导出的字段可以包含用于分隔文件中字段的字符,您的选择是:

  1. 使用不同的分隔符 - 这似乎是最简单的方法。只需使用“|”或“~”作为分隔符。将“,”全局替换为“|”使用几乎任何文本编辑器都可以在格式文件中进行编辑。目前尚不清楚为什么修改“整个”文件会很困难。也许您的文件收件人需要逗号分隔?

  2. 如果必须使用逗号作为分隔符,则必须将列分隔符从逗号 (,) 更改为引号-逗号-引号 (",")。为此,您需要使用转义字符让 BCP 程序忽略您想要在输出文件中用作分隔符的引号,这样它就不会将它们视为它理解的在格式文件中包含分隔符的引号。所以...

代替“,”...使用...“\”,\“”

这将导致以下结果

列1,列2,“列,3”,列4

对于 col1,分隔符是: ,要在格式文件中表示,请使用:“,”

对于 col2,分隔符是:,"在格式文件中表示这一点,使用:",\""

对于 col3,分隔符是:“,在格式文件中表示它使用:”\”,”

对于 col4,分隔符是: ,要在格式文件中表示,请使用:“,”

希望对您有所帮助。

关于sql-server - SQL Server BCP 导出 SQL 字段中的 where 逗号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52170391/

相关文章:

sql-server - 将 .bacpac 文件从本地上传到 Azure 时出错

sql - 无法将数据保存到 SQL Server 数据库

sql - 使用bcp将CSV文件导入到SQL 2005或2008

bcp - 插入标识列的 BCP 格式是什么

sql-server - sql server 的 bcp 错误

sql-server - 在 SQL Server 数据库中自动添加对象及其关系

sql-server - LINQ 查询返回列表,其中条件基于另一个表

SQL 脚本出错需要帮助恢复导致问题的列名称中的 '[' 字符

sql-server - 将 bcp 放入带有另一个 sql 语句的事务中

sql-server - BCP 错误 "Unable to open BCP host data-file"