Была создана таблица
CREATE TABLE photo (
photo BYTE in "blobspace",
name TEXT in "blobspace"
) EXTENT SIZE 32 NEXT SIZE 32 LOCK MODE PAGE
Любые действия с талицей Select,Insert.. работают, но
при unload to 'c:\out.out' select * from photo
в файл c:\out.out данные из блоб полей не пишутся,
т.е. он гораздо меньшего размера чем должен быть
и при load естественно данные пропадают.
Как сделать чтобы при unloade двоичные данные
не терялись ??
--
// PPA
"Журавлев Денис" <z...@chspz.ru> wrote in message
news:8mp5kc$401$1...@news.lucky.net...
"Petro Petin" <ppafo...@yahoo.com> wrote in message
news:96574577...@jet.ncc.icyb.kiev.ua...
Нескромный вопрос - а ты уверен, что ты _вставил_ туда Блобы ?
Как ты их инсертил ?
Если уверен, то выгружает ли dbexport ? обычно он выгружает все корректно...
С уважением, Василий.
photo00143.unl
1|FFD8FFE000104A46494600010201004800480000FFED10C6506
4A464946 = jfif == начало jpeg
но длина длина всей строки 2200 символов т.е. ~ 1000 байт
(т.к. 255 = FF (1 байт в базе ~ 2 в файле .unl))
Длина всех строк разная, т.е. при export, unload полей типа byte
Информикс IDS2000 9.20.TC1 обрезает концы записей.
Картинки insert из Delphi
Query1.Append;
Query1photo.LoadFromFile(OpenDialog.FileName);
Query1.Post;
Просматриваю select
BlobStream := TBlobStream.Create(Query1photo, bmRead);
JPEG := TJPEGImage.Create;
try
BlobStream.Position:= 0;
JPEG.LoadFromStream(BlobStream);
imgFoto.Picture.Assign(JPEG);
finally
StatusBar1.SimpleText := IntToStr(BlobStream.Size)+' b';
JPEG.Free;
BlobStream.Free;
end;
Все работает как часы.
[...]
Тут мне на днях некая Наташа прислала очень похожие вопросы, причем у нее
блобы обрезаются до 10К.
Я ей посоветовал обратить внимание на DBBLOBBUF, но боюсь что это не
помогло.
А никто не искал баги на эту тему на сайте Информикса ?
Дальше несколько советов на эту же тему из письма
---------------------------
[...]
Проблема может лежать на стыке нескольких проблем, например локализации,
разделитель полей и т.д.
Рекомендую почитать документацию на тему load/unload, BLOB, параметры
окружения для dbaccess
и вот это:
=============
If you are unloading files that contain BYTE, TEXT, or VARCHAR data types,
note the following information:
- BYTE items are written in hexadecimal dump format with no added
spaces or new lines. Consequently, the logical length of an unloaded
file that contains BYTE items can be very long and very difficult to
print or edit.
- Trailing blanks are retained in VARCHAR fields.
- Do not use the following characters as delimiters in the UNLOAD TO
file: 0 to 9, a to f, A to F, newline character, or backslash.
If you are unloading files that contain data types, BYTE or TEXT columns
smaller than 10 kilobytes are stored temporarily in memory. You can adjust
the 10-kilobyte setting to a larger setting with the DBBLOBBUF environment
variable. BYTE or TEXT columns larger than the default or the setting of the
DBBLOBBUF environment variable are stored in a temporary file. For
additional information about the DBBLOBBUF environment variable, see the
Informix Guide to SQL: Reference.
================
[...]
Забыл напомнить, что временные файлы создаются по пути, указанному в DBTEMP
или в \TMP .
Может у Вас там нет места или они не указаны....
P.S. Если проблему решите - дайте мне знать, чтобы на будущее пригодилось
учить слушателей :)
С уважением,
Василий Шульженко.