Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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
1-99622
abr
2003-12-16 18:14
2003.12.30
focus


1-99640
Kelegorm
2003-12-16 14:59
2003.12.30
Отображение текста и формулы в одном месте. Срочно!


14-99777
Thor
2003-12-05 15:07
2003.12.30
Борис Абрамыч инициалы сменил.


3-99467
Vic
2003-12-05 11:38
2003.12.30
Обращение к значению Sum при работе с ADO


4-99818
volser
2003-11-02 13:50
2003.12.30
Как отловить нажати мыши над системными часами?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский