Форум: "Базы";
Текущий архив: 2003.12.30;
Скачать: [xml.tar.bz2];
ВнизADO и TBlobField в Oracle Найти похожие ветки
← →
Labert (2003-12-03 13:54) [0]Есть две таблицы с одинаковой структурой под Oracle8i.
Короче надо данные перенести из одной в другую.
Проблема в том, что в таблицах есть поле типа LONG RAW,
Delphi для него создал компонент типа TBlobField.
Короче пишу так:
SrcTable.Append;
DestTableBLOBFIELD.Value := SrcTableBLOBFIELD.Value;
SrcTable.Post;
ну так вот.
некоторые записи копируются нормально (там где в этом поле не очень длинное значение),
а в некоторых копируемое значение обрезается (например, с 80 килобайт до 15 килобайт)
причем никаких сообщений об ошибках не выводится
что делать
помогите, пожалуйста
← →
Silver Alex (2003-12-03 14:06) [1]проще запросом
Insert into ToTAble(BLOBFIELD)
select blobfield from FromTable
← →
Reindeer Moss Eater (2003-12-03 14:07) [2]Нет не проще
← →
Reindeer Moss Eater (2003-12-03 14:08) [3]DestTableBLOBFIELD.Assign(SrcTableBLOBFIELD);
не помогает?
← →
Silver Alex (2003-12-03 14:15) [4]
> DestTableBLOBFIELD.Assign(SrcTableBLOBFIELD);
и чем лучше(или проще), я так понимаю там не одна запись "Короче надо данные перенести из одной в другую."
← →
Reindeer Moss Eater (2003-12-03 14:20) [5]Silver Alex
Твой вариант неприемлим вообще. По ряду объективных причин.
Хоть одна там запись, хоть миллион.
← →
Silver Alex (2003-12-03 14:23) [6]
> Твой вариант неприемлим вообще. По ряду объективных причин.
да ну?хочешь сказать так вообще не будет работать что-ли?Каких причин? может я чего не понял?
← →
Reindeer Moss Eater (2003-12-03 14:26) [7]Я не хочу сказать, я сказал, что не будет работать.
Потому что LONG RAW и потому что ORACLE.
← →
Silver Alex (2003-12-03 14:33) [8]понятно.ORACLE не особо знаю.Первый раз такое слышу. И что это за тип LONG RAW ?И какая вообще разница?как же запросом вставить записи?Без Делфы?не верится что-то, но спорить не буду
← →
Labert (2003-12-03 14:37) [9]Вариант
Insert into ToTAble(BLOBFIELD)
select blobfield from FromTable
не проходит, Oracle не разрешает такую операцию именно для LONG RAW.
С Assign сейчас попробую, но думаю, это не поможет, так как:
Присваивание
DestTableBLOBFIELD.Value := SrcTableBLOBFIELD.Value;
проходит нормально, все данные переносятся хорошо
Я проверял так:
после присваивания делаю
DestTableBLOBFIELD.SaveToFile(some_file1)
SrcTableBLOBFIELD.SaveToFile(some_file2)
файлы получаются одинаковые.
но потом в таблицу записываются обрезанные данные.
короче, с удовольствием побил бы лицо создателям ADO
← →
Reindeer Moss Eater (2003-12-04 09:19) [10]При чем здесь АДО?
У тебя набор данных из многих строк и в списке полей есть LONG RAW.
Драйверу что, все их фетчить до последнего байта только потому что кто-то такие запросы пишет неподумавши?
← →
Labert (2003-12-04 18:07) [11]но ведь он фетчит - SaveToFile правильные данные сохраняет
← →
Reindeer Moss Eater (2003-12-04 22:01) [12]Фетчит, когда сохраняет рекордсет в файл. И это правильно.
А ты сохраняешь рекордсет в файл?
Нет.
Представь, что у тебя в таблице с LONG RAW полем 100 записей.
В каждом блоб поле 1 мб данных.
Сколько времени происходило бы отурытие датасета, если бы все блобы фетчились полностью при открытии таблицы?
Не всех ста строк, а хотя бы тех, что передаются на клиента сразу.
Это происходит на смом деле? Нет не происходит.
← →
Labert (2003-12-05 08:23) [13]Во-первых, там около 50-ти строк в среднем по 50 Кб,
во-вторых, повторяю, я для каждой записи делал так:
SrcTable.Append;
DestTableBLOBFIELD.Value := SrcTableBLOBFIELD.Value;
DestTableBLOBFIELD.SaveToFile(some_file1)
SrcTableBLOBFIELD.SaveToFile(some_file2)
SrcTable.Post;
Данные в оба файла сохраняются правильные, а в таблицу попадают неправильные.
пробовал даже так (изврат, конечно):
DestTableBLOBFIELD.SaveToFile(some_file1)
SrcTableBLOBFIELD.LoadFromFile(some_file1)
тот же результат
← →
Danilka (2003-12-05 08:45) [14]хм, а зачем вообще записи на клиента тащить, не правильнее-ли сделать все на сервере? вообще-то с LONG RAW я не работал, все как-то с обычным блобом, но все-таки?
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2003.12.30;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.011 c