BCP - 导出的文件(docx,xl​​sx和amp; pptx)已损坏

时间:2013-03-09 18:23:09

标签: sql filestream bcp

我正在使用下面的bcp命令从文件流db中导出二进制文件,并且所有其他文件似乎都被正常导出(即txt,pdf,rtf,图像文件和等),除了docx,xl​​sx& pptx文件。我能够导出这些文件(即docx,xl​​sx和amp; pptx),但是在打开这些文件时我收到警告/错误消息,然后它正确打开文件。

BCP "SELECT content FROM [dbo].[Contents] WHERE ID=1" queryout "C:\Temp\" -T -S (local) -f C:\Temp\files.fmt

打开docx,xl​​sx&时,我收到以下消息pptx文件:

XLSX - Excel发现了不可读的内容,您想要恢复此文档的内容吗? DOCX - 文件test.docx无法打开bcos内容有问题,然后Excel发现不可读的内容,你想恢复这个文件的内容吗?

另外,我在files.fmt文件中有这个:

10.0
1
1 SQLBINARY 0 0“\ t”1内容“”

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

我不是100%确定你的问题是否与我的问题相同但在我的情况下,我发现问题实际上是在部分,而不是在阅读部分。例如,我原来的编写代码是这样的:

Dim FILE_CONTENT(len) As Byte
File.InputStream.Read(FILE_CONTENT, 0, len)
SaveFileToDatabase(FILE_NAME, CONTENT_TYPE, FILE_CONTENT)

当我更改第一行时如下:

Dim FILE_CONTENT(0 To len - 1) As Byte 

读数错误消失了。我只是忘了VB在默认情况下默认分配N + 1个字节(O到N)而不指定下限。请参阅此处描述的类似情况:Uploaded Docx Files are getting corrupted。希望有所帮助。

相关问题