Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 2 [3]      все
 Re: Загрузка полей IMAGE в SQL2005  [new]
Glory
Member

Откуда:
Сообщений: 104751
native format - это

-n

Performs the bulk copy operation using the native (database) data types of the data. This option does not prompt for each field; it uses the native values.
3 сен 09, 22:11    [7615578]     Ответить | Цитировать Сообщить модератору
 Re: Загрузка полей IMAGE в SQL2005  [new]
SIMPLicity_
Member

Откуда: (((@)))
Сообщений: 8898
Glory
native format - это

-n

Performs the bulk copy operation using the native (database) data types of the data. This option does not prompt for each field; it uses the native values.


Хорошо.
Переписываем строку выгрузки вот так:

bcp "SELECT top 1 FileImage FROM tempdb..TransTbl order by LoadTime desc" queryout c:\native_image.rar  -SLATITUDED820\E2005 -T -n
Тогда поле (а оно у меня IMAGE) утилита bcp мне радостно выгружает с 4-мя байтами вначале. Это так в умолчании формата записано, ИМХО. Если попытаться выгрузить строкой
bcp "SELECT top 1 FileImage FROM tempdb..TransTbl order by LoadTime desc" queryout c:\native_image.rar  -SLATITUDED820\E2005 -T
то как раз эти злополучные 4 байта и вставятся в начало.

Если я объявляю поле VB с образом файла как varbinary и выгружаю его командой же
bcp "SELECT top 1 VB FROM tempdb..TransTbl order by LoadTime desc" queryout c:\native_image.rar  -SLATITUDED820\E2005 -T -n
, то получаю вначале уже не 4 байта а восемь!

Типа, вот она и выгрузка в native format....

Glory, если Вы так настаиваете именно на использовании native format (т.е. -n - опции), то подскажите, пожалуйста, для какого типа полей этот native format при выгрузке предусматривает ОТСУТСТВИЕ лидирующих данных...
3 сен 09, 23:18    [7615705]     Ответить | Цитировать Сообщить модератору
 Re: Загрузка полей IMAGE в SQL2005  [new]
Glory
Member

Откуда:
Сообщений: 104751
SIMPLicity_

Glory, если Вы так настаиваете именно на использовании native format (т.е. -n - опции), то подскажите, пожалуйста, для какого типа полей этот native format при выгрузке предусматривает ОТСУТСТВИЕ лидирующих данных...

Такое впечатление, что вы не читаете приводимые цитаты из хелпа.
Найтив формат как раз и добавляет prefix length.
3 сен 09, 23:22    [7615716]     Ответить | Цитировать Сообщить модератору
 Re: Загрузка полей IMAGE в SQL2005  [new]
SIMPLicity_
Member

Откуда: (((@)))
Сообщений: 8898
Glory
SIMPLicity_

Glory, если Вы так настаиваете именно на использовании native format (т.е. -n - опции), то подскажите, пожалуйста, для какого типа полей этот native format при выгрузке предусматривает ОТСУТСТВИЕ лидирующих данных...

Такое впечатление, что вы не читаете приводимые цитаты из хелпа.
Найтив формат как раз и добавляет prefix length.


Так у меня и воарос-то в том - КАК ИЗБАВИТЬСЯ ОТ prefix (т.е. сделать prefix length = 0).

PS Самое интересное, что в .fmt-файле есть и тип и нулевая длинна этого prefix length, но я не могу понять как задать этот параметр в коммандной строке утилиты bcp.
9.0
1
1       SQLBINARY     0       0       ""   1     FileImage              ""
То, как это .fmt - файл получен...

К сообщению приложен файл. Размер - 0Kb
3 сен 09, 23:33    [7615734]     Ответить | Цитировать Сообщить модератору
 Re: Загрузка полей IMAGE в SQL2005  [new]
SIMPLicity_
Member

Откуда: (((@)))
Сообщений: 8898
UP

Может кто-то всё же поможет?

Как без форматного файла средством TSQL выгрузить на диск файл из поля типа image в первозданном виде безо всяких дополнительных байтов?

Заранее СПАСИБО!
7 сен 09, 15:25    [7627251]     Ответить | Цитировать Сообщить модератору
 Re: Загрузка полей IMAGE в SQL2005  [new]
Slider_spb
Member

Откуда:
Сообщений: 802
Я на эти четыре байта наткнулся несколько лет назад, задавал этот вопрос, как от них избавиться, и мне было отвечено, что средствами tsql или bcp - никак.
С тех пор, похоже, ничего не поменялось...
7 сен 09, 17:20    [7628244]     Ответить | Цитировать Сообщить модератору
 Re: Загрузка полей IMAGE в SQL2005  [new]
Freedom for my nick
Member [заблокирован]

Откуда:
Сообщений: 1484
наткнулся в гугле на ветку.
тоже стоит проблема выгрузки файла на диск.
хочу наверное воспользоваться вот этим
Использование внешних объектных моделей в коде Transact-SQL (хранимые процедуры OLE Automation)
По сути если в базе в поле хранятся varbinary, то запросом их можно выдернуть и записать на диск. Методами T-SQL
18 фев 10, 10:08    [8361857]     Ответить | Цитировать Сообщить модератору
 Re: Загрузка полей IMAGE в SQL2005  [new]
Freedom for my nick
Member [заблокирован]

Откуда:
Сообщений: 1484
пришел к такому варианту
DECLARE @ObjectToken INT
declare @data varbinary(max)
declare @filename varchar(max)

EXEC sp_OACreate 'ADODB.Stream', @ObjectToken OUTPUT
EXEC sp_OASetProperty @ObjectToken, 'Type', 1
EXEC sp_OAMethod @ObjectToken, 'Open'
EXEC sp_OAMethod @ObjectToken, 'Write', NULL, @data
EXEC sp_OAMethod @ObjectToken, 'SaveToFile', NULL, @filename, 2
EXEC sp_OAMethod @ObjectToken, 'Close'
EXEC sp_OADestroy @ObjectToken
18 фев 10, 11:26    [8362557]     Ответить | Цитировать Сообщить модератору
 Re: Загрузка полей IMAGE в SQL2005  [new]
Glory
Member

Откуда:
Сообщений: 104751
Freedom for my nick
пришел к такому варианту

Только задача была обратная вообще то ": Загрузка полей IMAGE в SQL2005 "
18 фев 10, 11:27    [8362564]     Ответить | Цитировать Сообщить модератору
 Re: Загрузка полей IMAGE в SQL2005  [new]
Freedom for my nick
Member [заблокирован]

Откуда:
Сообщений: 1484
опция OLE Automation была вырублена
включать так
sp_configure 'show advanced options', 1;  
GO  
RECONFIGURE;  
GO  
sp_configure 'Ole Automation Procedures', 1;  
GO  
RECONFIGURE; 
18 фев 10, 11:27    [8362565]     Ответить | Цитировать Сообщить модератору
 Re: Загрузка полей IMAGE в SQL2005  [new]
Freedom for my nick
Member [заблокирован]

Откуда:
Сообщений: 1484
Glory
Freedom for my nick
пришел к такому варианту

Только задача была обратная вообще то ": Загрузка полей IMAGE в SQL2005 "

ну так аналогичным способом прочитать файловый поток и будет счастье
18 фев 10, 11:28    [8362574]     Ответить | Цитировать Сообщить модератору
 Re: Загрузка полей IMAGE в SQL2005  [new]
Freedom for my nick
Member [заблокирован]

Откуда:
Сообщений: 1484
Загрузка, ограничена 8000 символами
DECLARE @ObjectToken INT
declare @filename varchar(max)
declare @binaryout varbinary (8000)

EXEC sp_OACreate 'ADODB.Stream', @ObjectToken OUTPUT
EXEC sp_OASetProperty @ObjectToken, 'Type', 1
EXEC sp_OAMethod @ObjectToken, 'Open'
EXEC sp_OAMethod @ObjectToken, 'LoadFromFile', null, @filename
EXEC sp_OAMethod @ObjectToken, 'Read', @binaryout out, '8000'
EXEC sp_OAMethod @ObjectToken, 'Close'
EXEC sp_OADestroy @ObjectToken
Интересно а на больше получится сделать?
18 фев 10, 12:52    [8363447]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 2 [3]      все
Все форумы / Microsoft SQL Server Ответить