![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Копирую из InterBase в MS SQL с фотографиями! [D7, IB6.x, MSSQL]
DmitrichJ © (2007-03-30 16:19:00)Я перевржу БД из InterBase в MS SQL. Все данные копируются хорошо, но с фотографиями небольшая проблема. Они попадают в MS SQL в обрезаном виде-только начало фотографии, а всё остальное серое. Делаю так:
var
stream:TStringStream;
...
//выборка из InterBase
Form1.IBQuery1.SQL.Text:='Select * from ...';
...
//Вставляем в MS SQL
Form1.Query1.SQL.Text:=
'Insert into Table(...,photo) values (.... , :P)';
stream:=TStringStream.Create(Form1.IBQuery1.FieldByName('PHOTO').AsString);
Form1.Query1.ParamByName('P').LoadFromStream(stream,ftBlob);
Form1.Query1.ExecSQL;
Подскажите, что не так/
Поля в БД
InterBase: BLOB BLOB sub_type 1 segment size 1 CHARACTER SET WIN1251
MS SQL: IMAGE
Desdechado (2007-03-30 19:45:00) [41]> Query не может передавать больше 32Кб в одном запросе.
Враки. Через параметры можно что угодно и сколько угодно.
DmitrichJ (2007-03-30 19:43:00) [42]Виталий Панасенко, да. Использую Query из BDE
Виталий Панасенко (2007-03-30 18:24:00) [43]
> DmitrichJ (30.03.07 18:01) [19]
> Я нашёл проблему. Дело в том, что Query не может передавать
> больше 32Кб в одном запросе. Есть другие варианты вставки
> записей в БД?
Это ты через БДЕ тянешь ?
Jan (2007-03-30 18:18:00) [44]
> Используй ADO
там тоже не все так гладко...
Плохиш (2007-03-30 18:17:00) [45]Используй ADO
DmitrichJ (2007-03-30 18:01:00) [46]Я нашёл проблему. Дело в том, что Query не может передавать больше 32Кб в одном запросе. Есть другие варианты вставки записей в БД?
Плохиш (2007-03-30 17:58:00) [47]
> stream:=TStringStream.Create(Form1.IBQuery1.FieldByName('PHOTO'). AsString);
Концом строки является символ #0, вот от этого и думай.
PS. В справке подробненько описано как работают с BLOB-полями, там, по-секрету, даже пример есть...
stud (2007-03-30 17:56:00) [48]так блоб используй
DmitrichJ (2007-03-30 17:35:00) [49]Можно ли вставить картинку stream типа TMemoryStream в MS SQL? Или может проблема в самой базе и объявлении типов? Использую тип IMAGE
DmitrichJ (2007-03-30 17:25:00) [50]ой. Наврал. 32 Кб. При таком способе вставки.
DmitrichJ (2007-03-30 17:24:00) [51]Я понял почуму обрезаются картинки.
Почему поле IMAGE в MS SQL вмещает только 2 Мб?
Jan (2007-03-30 17:17:00) [52]
> Jan, что за линкед?
линкед сервер из MS SQL на InterBase. Ставишь ODBC драйвер - http://www.praktik.km.ua/downloads/Firebird_ODBC_2.0.0-Win32.exe, добавляешь в ODBC системный DSN - выбираешь установленный драйвер и настраиваешь на нужную тебе базу. В MS SQL добавляешь линкед сервер или через EM или sp_addlinkedserver. И данные перебрасываешь через openquery.
DmitrichJ (2007-03-30 16:57:00) [53]Ладно... не важно как, но в MemoryStream я получил полноценную картинку, копирую её на диск-всё нормально.
Может не так я её добавляю в MS SQL?
DmitrichJ (2007-03-30 16:51:00) [54]говорит, что нет такой=(
Johnmen (2007-03-30 16:50:00) [55]TBlobField
DmitrichJ (2007-03-30 16:47:00) [56]TIBBlobField из какой библиотки?
Johnmen (2007-03-30 16:42:00) [57]....
stream:=TMemoryStream.Create;
TIBBlobField(Form1.IBQuery1.FieldByName('PHOTO')).SaveToStream(stream);
....
DmitrichJ (2007-03-30 16:40:00) [58]Jan, что за линкед?
Jan (2007-03-30 16:37:00) [59]
> Jan, можно пожробнее?
что конкретнее?
DmitrichJ (2007-03-30 16:36:00) [60]Jan, можно пожробнее?