首页 > 解决方案 > BCP:导出时无法使用本机格式

问题描述

这就是我使用 BCP 的方式:

-- 在本机内容中生成格式文件 (-n)

bcp Sales.dbo.Num format nul -n -f D:\Format.fmt -T -S .\sqlexpress

-- 使用上述格式文件导出表格

bcp Sales.dbo.Num out D:\FactNum.csv -f D:\Format.fmt -T -S .\sqlexpress

但无论我做什么,输出 .csv 总是乱码。

附言

  1. 如果格式文件的 char 版本(使用 -c 参数),它运行良好

  2. 我尝试过格式文件的 xml 本机版本,但没有帮助

  3. 浏览了 MSDN 上的这个和基本 BCP 文档

请建议

标签: sql-serverbcp

解决方案


正如您所说,“胡言乱语”是您使用本机(-n)数据时得到的。数据以 SQL Server 的本机格式写入文件,而不是 ascii 文本。我相信你想看ASCII文本?如果是这样,这就是字符 (-c) 选项的用途。

在这方面,使用格式文件与文件的“格式”无关。

有数据的格式(由 -c、-n 和其他选项设置),然后是列的格式……如果您选择,则由格式文件定义。

您正在以本机格式导出数据,但您希望它看起来像不是 SQL 本机格式的数据。SQL 原生格式不是供人类使用的……它是由 SQL Server 读取的。


推荐阅读