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

SQL Server BCP export binary to file: extra data at the begining of the file

我尝试将 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-w 替换 -N 参数,但没有成功。

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

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

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