SQL Server BCP将二进制文件导出到文件:文件开头的额外数据

时间:2016-11-28 13:45:39

标签: sql-server blob bcp

我尝试将 xp_cmdshell 与此BCP一起使用:

'BCP "SELECT TOP 1 Data FROM <FQDN> WHERE Name = ''<name>'' " queryout "C:\exportdir\export_data.dat" -T -n -S .\SQLEXPRESS'

但是我在文件缓冲区的开头得到了一些额外的数据。我测试了两次,两个文件都以

开头
  

BB 67 B9 00 00 00 00

我想摆脱这种情况,我尝试用-N-n替换-w参数,但没有运气。

1 个答案:

答案 0 :(得分:2)

要执行此操作,您需要使用格式文件运行导出,该格式文件为data字段指定 0 的前缀长度。您可以从XML格式文件或非XML格式文件中指定它。

E.g。生成非XML格式文件:要创建非XML格式文件,您将使用参数format nul -f <format_file>运行BCP(除了其他必需参数)。这将创建您指定它的格式文件。使用您喜欢的文本编辑器并将前缀长度更改为0.默认情况下,这将由BCP生成为非零,并且无法仅使用带参数的BCP将其自动设置为0。

在最终导出命令中,您将引用格式文件(前缀长度为0)以原始形式导出文件。有关详细信息,请参阅格式文件的文档:Create a Format File (SQL Server)Non-XML Format Files (SQL Server)等。