2013-03-09 8 views
1

Я использую приведенную ниже команду bcp для экспорта двоичных файлов из db filestream, и все остальные файлы, как представляется, экспортируются в порядке (т.е. txt, pdf, rtf, файлы изображений & и т. д.), кроме docx, xlsx & pptx файлов. Я могу экспортировать эти файлы (т. Е. Docx, xlsx & pptx), но при открытии этих файлов я получаю сообщение об ошибке/ошибке, а затем он открывает файл должным образом.BCP - поврежденные файлы (docx, xlsx & pptx)

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

Я получаю сообщение ниже при открытии DOCX, XLSX & PPTX файлов:

XLSX - Excel найти не удается прочитать содержимое и Вы хотите, чтобы восстановить содержание этого документа? DOCX - Файл test.docx не может быть открыт bcos есть проблемы с содержимым, а затем Excel нашел нечитаемый контент и хотите ли вы восстановить содержимое этого документа?

Кроме того, у меня есть это в моем файле files.fmt:

10,0
1 SQLBINARY 0 0 "\ т" 1 "содержание"

Любая помощь будет высоко ценится.

+0

Возможно, вкладки или символы новой строки были добавлены в качестве терминаторов столбцов и строк? Не уверен, что bcp может экспортировать один blob. – usr

+0

Не могли бы вы объяснить мне? – user972255

+0

Знаете ли вы, что делает bcp и как он обычно используется? Обычно он копирует несколько столбцов и несколько строк. Они разделены. – usr

ответ

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. надеюсь, это поможет.

Смежные вопросы