У меня есть база данных SQL Server 2008 со столбцом VARCHAR (MAX) FILESTREAM. Я могу загрузить в него запись, используя такой синтаксис:
`INSERT INTO DocumentRepository(DocumentExtension, DocumentName, Document)
SELECT
'doc' AS DocumentExtension
, 'Hamlet.doc' AS DocumentName
, * FROM OPENROWSET(BULK 'D:\Docs\Hamlet.doc', SINGLE_BLOB)
AS Document;`
Это отлично загружает мой текстовый документ. Я хотел бы знать, как извлечь данные обратно на диск с помощью инструментов, поставляемых с SQL Server. Это может быть T-SQL, bcp и т. Д., Мне все равно, я просто хотел бы знать, как это сделать, не прибегая к написанию приложения .NET.
Я экспериментировал с bcp, используя переключатели -c, -n, -N и -w, и он извлечет документ, но он неправильно отформатирован. Когда я открываю его в Word, вначале появляется много бинарной тарабарщины, а пока есть текст, все форматирование пропадает.
Спасибо!
Мне немного неловко признавать это, учитывая, что я написал технический документ FILESTREAM для Microsoft, но я не знаю ответа. Я чувствую то же самое, что и UndertheFold - вы не можете этого сделать. Я хотел понять, смогу ли я найти способ сделать это с помощью SSIS, но не смог.
Отличный вопрос - в основном вы не можете - вы можете выбрать путь и получить доступ к файлу прямо из файловой системы
Но от Книги онлайн вы заметите, что операции
FILESTREAM интегрирует ядро СУБД SQL Server с файловой системой NTFS, сохраняя данные больших двоичных объектов (BLOB) varbinary (max) в виде файлов в файловой системе. Инструкции Transact-SQL могут вставлять, обновлять, запрашивать, искать и создавать резервные копии данных FILESTREAM. Интерфейсы файловой системы Win32 обеспечивают потоковый доступ к данным.
Как заявляет UndertheFold, вы не можете.
Однако важно понимать, что переименование или удаление файлов непосредственно в файловой системе приведет к повреждению вашей базы данных (Источник). Я не уверен насчет редактирования файлов, но лично я бы не стал рисковать.
Вы пробовали использовать задачу «Экспорт столбца» в SSIS?
Здесь есть решение, которое должно сработать. Сам не тестировал, но выглядит нормально.
http://www.connectsql.com/2010/12/ssis-filestream-data-export-and-import.html