|
Выгрузка файла на диск из БД
|
|||
---|---|---|---|
#18+
Храню файл в таблице в поле image в формате BASE64. (SQL 2008) Подскажите как средствами sql мне выгрузить этот файл на диск. Выгрузку планирую повесить на триггер. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.01.2021, 21:34 |
|
Выгрузка файла на диск из БД
|
|||
---|---|---|---|
#18+
Петр Храню файл в таблице в поле image в формате BASE64. (SQL 2008) Подскажите как средствами sql мне выгрузить этот файл на диск. Выгрузку планирую повесить на триггер. Есть несколько вариантов
... |
|||
:
Нравится:
Не нравится:
|
|||
21.01.2021, 22:14 |
|
Выгрузка файла на диск из БД
|
|||
---|---|---|---|
#18+
Петр, base64 лучше хранить в varchar(max) поле. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.01.2021, 22:58 |
|
Выгрузка файла на диск из БД
|
|||
---|---|---|---|
#18+
Поднять версию MSSQLSERVER до 2012, и выгружать данные в filetable с внешним нетразакционным доступом. И в триггере тогда будет можно :-). ... хотя я бы взвел service broker, и в триггере просто отправлял туда сообщения. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.01.2021, 08:44 |
|
Выгрузка файла на диск из БД
|
|||
---|---|---|---|
#18+
Это пример по чтению ,переделай Scripting.FileSystemObject под запись. ALTER PROCEDURE [dbo].[spREADFileStream] @FILE_PATH VARCHAR(MAX) ,@FILE_NAME VARCHAR(100) ,@STRING VARCHAR(MAX) OUTPUT AS BEGIN DECLARE @objFileSystem INT ,@objTextStream INT ,@objErrorObject INT ,@strErrorMessage VARCHAR(1000) ,@Command VARCHAR(1000) ,@Chunk VARCHAR(8000) ,@strText VARCHAR(max) ,@intResult INT ,@YesOrNo INT SELECT @strText = '' SELECT @strErrorMessage = 'File System Object' EXECUTE @intResult = sp_OACreate 'Scripting.FileSystemObject' ,@objFileSystem OUT IF @intResult = 0 SELECT @objErrorObject = @objFileSystem, @strErrorMessage ='Opening file "' + @FILE_PATH + '\' + @FILE_NAME + '"',@command = @FILE_PATH + '\' + @FILE_NAME IF @intResult = 0 EXECUTE @intResult = sp_OAMethod @objFileSystem , 'OpenTextFile', @objTextStream OUT, @command,1,false,0 --//Forreading, FormatASCII WHILE (@intResult = 0) BEGIN IF @intResult = 0 SELECT @objErrorObject = @objTextStream, @strErrorMessage = 'Finding out if there is more to read in "' +@FILE_NAME + '"' IF @intResult = 0 EXECUTE @intResult = sp_OAGetProperty @objTextStream, 'AtEndOfStream', @YesOrNo OUTPUT IF @YesOrNo<>0 BREAK IF @intResult = 0 SELECT @objErrorObject = @objTextStream,@strErrorMessage = ' Reading from the output file "' + @FILE_NAME + '"' IF @intResult = 0 EXECUTE @intResult = sp_OAMethod @objTextStream, 'Read', @chunk OUTPUT,4000 SELECT @strText = @strText + @chunk END IF @intResult = 0 SELECT @objErrorObject = @objTextStream, @strErrorMessage = 'Closing the output file "' + @FILE_NAME + '"' IF @intResult = 0 EXECUTE @intResult = sp_OAMethod @objTextStream, 'Close' IF @intResult<>0 BEGIN DECLARE @Source VARCHAR(255),@Description VARCHAR(255) ,@Helpfile VARCHAR(255),@HelpID INT EXECUTE sp_OAGetErrorInfo @objErrorObject, @source OUTPUT,@Description OUTPUT,@Helpfile OUTPUT,@HelpID OUTPUT SELECT @strErrorMessage = 'Error whilst ' + coalesce(@strErrorMessage,'doing something') + ', ' + coalesce(@Description,'') SELECT @strText = @strErrorMessage END EXECUTE sp_OADestroy @objTextStream SET @STRING = @strText RETURN END ... |
|||
:
Нравится:
Не нравится:
|
|||
25.01.2021, 05:54 |
|
Выгрузка файла на диск из БД
|
|||
---|---|---|---|
#18+
Для выгрузки файлов взял пример как советовал flexgen через OLE (код ниже). Для моего случая подходит, за одним исключением, у меня сейчас файлы хранятся в базе в формате base64 в поле с типом image Как мне преобразовать их из него перед выгрузкой в файл? Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54.
... |
|||
:
Нравится:
Не нравится:
|
|||
19.07.2021, 16:24 |
|
Выгрузка файла на диск из БД
|
|||
---|---|---|---|
#18+
Фигней занимаетесь. Напишите клиентское приложение для выгрузки. ЗЫ. Но если очень хочется... Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
... |
|||
:
Нравится:
Не нравится:
|
|||
19.07.2021, 16:46 |
|
Выгрузка файла на диск из БД
|
|||
---|---|---|---|
#18+
aleks222 Фигней занимаетесь. Напишите клиентское приложение для выгрузки. ЗЫ. Но если очень хочется... не хочется, но выхода не вижу лучшего. я не могу на вход функции подать varchar(max) - файл больше 8000 байт ... |
|||
:
Нравится:
Не нравится:
|
|||
19.07.2021, 16:55 |
|
Выгрузка файла на диск из БД
|
|||
---|---|---|---|
#18+
Петр aleks222 Фигней занимаетесь. Напишите клиентское приложение для выгрузки. ЗЫ. Но если очень хочется... не хочется, но выхода не вижу лучшего. я не могу на вход функции подать varchar(max) - файл больше 8000 байт Ученье - свет. Учись, студент. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.07.2021, 16:57 |
|
Выгрузка файла на диск из БД
|
|||
---|---|---|---|
#18+
подставил преобразование, но исходный файл неверного формата экспортируется. есть какие то соображения? Код: sql 1. 2. 3. 4. 5. 6.
... |
|||
:
Нравится:
Не нравится:
|
|||
19.07.2021, 17:14 |
|
Выгрузка файла на диск из БД
|
|||
---|---|---|---|
#18+
Петр подставил преобразование, но исходный файл неверного формата экспортируется. есть какие то соображения? Проверить начальные-конечные байты файла ... |
|||
:
Нравится:
Не нравится:
|
|||
19.07.2021, 19:58 |
|
Выгрузка файла на диск из БД
|
|||
---|---|---|---|
#18+
вообщем походу я заблудился с трех соснах. для преобразования данных хранящихся в BASE64 - потребуется следующая функция Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
тогда конечный селект для записи в файл будет выглядеть так: Код: sql 1. 2. 3. 4. 5.
возможно можно упростить преобразования, но я не вижу как ... |
|||
:
Нравится:
Не нравится:
|
|||
20.07.2021, 00:18 |
|
|
start [/forum/topic.php?fid=46&fpage=19&tid=1684494]: |
0ms |
get settings: |
12ms |
get forum list: |
13ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
30ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
83ms |
get tp. blocked users: |
1ms |
others: | 13ms |
total: | 178ms |
0 / 0 |