我已成功将文件导出为 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"'
这很好用,但是有一个问题。有些字段中包含逗号。我正在使用这种格式文件:
我可以在格式文件中做什么以避免更改整个格式文件?有没有一种快速的方法来指示字段终止符在这些特定字段中不会以逗号结尾? IE。 “','“或者 ”'',''”?
感谢任何帮助。谢谢
最佳答案
如果您要导出的字段可以包含用于分隔文件中字段的字符,您的选择是:
使用不同的分隔符 - 这似乎是最简单的方法。只需使用“|”或“~”作为分隔符。将“,”全局替换为“|”使用几乎任何文本编辑器都可以在格式文件中进行编辑。目前尚不清楚为什么修改“整个”文件会很困难。也许您的文件收件人需要逗号分隔?
如果必须使用逗号作为分隔符,则必须将列分隔符从逗号 (,) 更改为引号-逗号-引号 (",")。为此,您需要使用转义字符让 BCP 程序忽略您想要在输出文件中用作分隔符的引号,这样它就不会将它们视为它理解的在格式文件中包含分隔符的引号。所以...
代替“,”...使用...“\”,\“”
这将导致以下结果
列1,列2,“列,3”,列4
对于 col1,分隔符是: ,要在格式文件中表示,请使用:“,”
对于 col2,分隔符是:,"在格式文件中表示这一点,使用:",\""
对于 col3,分隔符是:“,在格式文件中表示它使用:”\”,”
对于 col4,分隔符是: ,要在格式文件中表示,请使用:“,”
希望对您有所帮助。
关于sql-server - SQL Server BCP 导出 SQL 字段中的 where 逗号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52170391/