对不起,如果这个问题已被问到,但我找不到任何地方。我有一个表将文件存储为BLOBS。保存文件的列是图像数据类型。我希望能够从列中提取二进制数据并将其转换为实际文件。如果可能,我希望能够在BCP或管理工作室做到这一点。如何使用BCP或Sql Server Management Studio将BLOB数据从Sql Server中取出?
我尝试过BCP,但由于某种原因,当我尝试并拔出办公室文档时Word认为它已损坏。这是我迄今为止所尝试的(显然这些值已经改变,以保护无辜的:):
bcp "select document_binary_data from database where id = 12345" queryout "c:\filename.doc" -n -S server -U username -P password
这不工作,虽然?有什么想法吗?
编辑原来你不需要-n本地标志。此外,BCP尝试包括默认的图像列上一个4字节的前缀 - 你真的想这个设置为0
bcp "select document_binary_data from database where id = 12345" queryout "c:\filename.doc" -S server -U username -P password
Enter the file storage type of field document_binary [image]: Enter prefix-length of field document_binary [4]: 0 Enter length of field document_binary [0]: Enter field terminator [none]:
我亚伦,我们实际上做的所有的文件存储在文件系统95我们的应用程序的%。有一点仍然使用blob:( – Eric 2010-03-08 21:14:47
)您不需要预先填充字段长度的格式文件;下面的代码适用于我(在'9.0'和后面的'1'之后的换行符): '9.0 1 SQLBINARY 0 0“”1 col1“”' – Geoff 2013-05-13 20:22:40
@aaron - 显然在将varbinary(max)导出到文件时存在很多问题(我刚刚用c#完成了这项工作--3小时后尝试(使用BCP做)(问题在于'ref_length_field_file_binary'应该设置为'0' - 但它需要用户交互)。它也可以用FMT文件完成。但是如果我没有访问FMT文件?有没有办法在bcp命令中“内联使用”fmt内容? – 2013-12-10 14:43:06