Модераторы: LSD

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> BLOB в Oracle9i, Использование BLOB в Web Application 
:(
    Опции темы
Anet
Дата 8.1.2005, 22:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 41
Регистрация: 8.1.2005
Где: Алтайский край

Репутация: нет
Всего: нет







Здравствуйте, расскажите пожалуйста, как показать на экране содержимое документа *.doc, который хранится в поле типа BLOB в БД. Желательно использование PL/SQL.
Заранее благодарна.

PM MAIL ICQ   Вверх
igon
Дата 9.1.2005, 16:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 327
Регистрация: 30.10.2004

Репутация: 7
Всего: 21



Под *.doc подразумевается документ Microsoft Word?
ИМХО, средствами Oracle посмотреть его не удасться (я ориентируюсь на версию 9.0.1).
Но можно:
1. Сформировать файл в формате MSWord. Как - смотри в документации на Oracle
Oracle COM Automation Feature Developer's Guide
Раздел 4 Oracle COM Automation PL/SQL Demos. Возможно, придется "подправлять" демонстрационные пакеты.
2. При помощи приложения, например, на Java, через JDBC считать нужный BLOB и записать его в файл с расширением .doc
Сформированный в обоих вариантах файл смотреть в MSWord.
К сожалению, готовыми примерами не располагаю smile

И еще: Задача существенно упростится, если ты опишешь, каким способом файл MSWord попадает в BLOB Oracle - извлечение его будет практически зеркальным отражением: Insert-Select, InputStream-OutputStream и т.д.


--------------------
Хотите поговорить об этом?
PM   Вверх
Anet
Дата 9.1.2005, 19:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 41
Регистрация: 8.1.2005
Где: Алтайский край

Репутация: нет
Всего: нет



Спасибо. Я обязательно попробую.

Добавлено @ 19:25


Почему при загрузки в BLOB поле через HTML-тег <Textarea></Textarea> возможно отправить только 1558 символов русского текста?

PM MAIL ICQ   Вверх
LSD
Дата 9.1.2005, 23:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15719
Регистрация: 24.3.2004
Где: Dublin

Репутация: 18
Всего: 538



У меня есть пример полностью на PL/SQL как записать BLOB в файл, но вот как запустить Word я не знаю. Если интерестно могу выложить.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
igon
Дата 10.1.2005, 00:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 327
Регистрация: 30.10.2004

Репутация: 7
Всего: 21



Цитата
У меня есть пример полностью на PL/SQL как записать BLOB в файл, но вот как запустить Word я не знаю. Если интерестно могу выложить


Конечно, интересно - выкладывай smile

Цитата
Почему при загрузки в BLOB поле через HTML-тег <Textarea></Textarea> возможно отправить только 1558 символов русского текста?


HTML вообще не знает, что такое BLOB, так что вопрос о емкости Textarea - Web-программистам (в соседней ветке форума) smile



--------------------
Хотите поговорить об этом?
PM   Вверх
Anet
Дата 10.1.2005, 21:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 41
Регистрация: 8.1.2005
Где: Алтайский край

Репутация: нет
Всего: нет



Цитата
У меня есть пример полностью на PL/SQL как записать BLOB в файл, но вот как запустить Word я не знаю. Если интерестно могу выложить.




Было бы зодрово. Покажи, пожалуйста, код! smile


Добавлено @ 21:04


iqon, претворила в реальность ваши рекомендации! Работает, только данные в MSWORD записываются в 16-тиричном формате. Наверное надо кодировку сменить?

PM MAIL ICQ   Вверх
Anet
Дата 10.1.2005, 21:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 41
Регистрация: 8.1.2005
Где: Алтайский край

Репутация: нет
Всего: нет



уже записала в MSWORD по русски, т.е. просто добавила ...utl_raw.cast_to_varchar2(buffer)...
в нужном месте :-)

PM MAIL ICQ   Вверх
Guest
Дата 10.1.2005, 22:29 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered













подскажите, пожалуйста, как можно показать в WEB картинку из того же многострадального поля типа BLOB?

  Вверх
Гость_Anet
Дата 10.1.2005, 22:30 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











ой, забыла зайти )
  Вверх
Anet
Дата 10.1.2005, 22:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 41
Регистрация: 8.1.2005
Где: Алтайский край

Репутация: нет
Всего: нет




извините за путаницу. Забыла авторизироваться и не заметила.
повторяю вопрос:

Цитата
подскажите, пожалуйста, как можно показать в WEB картинку из того же многострадального поля типа BLOB?

PM MAIL ICQ   Вверх
igon
Дата 11.1.2005, 23:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 327
Регистрация: 30.10.2004

Репутация: 7
Всего: 21



Сохраняешь в файл с соответствующим расширением и в страничку вставляешь ссылку на этот файл


--------------------
Хотите поговорить об этом?
PM   Вверх
LSD
Дата 13.1.2005, 23:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15719
Регистрация: 24.3.2004
Где: Dublin

Репутация: 18
Всего: 538



Извинясь за задержку, не мог найти пример. И похоже я ошибся, записать данные в файл на PL/SQL нельзя. Можно только считать.
Код

declare
 data blob;
 src_bfile BFILE := bfilename('DEST_DIR', 'data.bin');
 dest_offset integer := 1;
 src_offset integer := 1;
begin
 dbms_lob.fileopen(src_loc, dbms_lob.file_readonly);
 dbms_lob.createtemporary(data , true , dbms_lob.call);
 dbms_lob.loadblobfromfile(data, src_loc , dbms_lob.lobmaxsize, dest_pos, src_pos);
 .....
 dbms_lob.fileclose(src_loc);
end;



--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
Anet
Дата 16.1.2005, 20:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 41
Регистрация: 8.1.2005
Где: Алтайский край

Репутация: нет
Всего: нет





Подскажите пожалуйста, как правильно написать команду alter table... ,чтобы переместить таблицу и все ее данные из табличного пространства SYSTEM в табличное пространство USERS(в таблице есть LOB-поля, хранящиеся в tablespace SYSTEM их тоже надо отправить в tablespace USERS)?

Добавлено @ 20:10


LSD, спасибо за скрипт.


Это сообщение отредактировал(а) Anet - 16.1.2005, 20:08
PM MAIL ICQ   Вверх
igon
Дата 17.1.2005, 01:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 327
Регистрация: 30.10.2004

Репутация: 7
Всего: 21



1. Нужно установить TableSpace по умолчанию в Users (у тебя он стоит в System), иначе в будущем придется все вновь создаваемые таблицы (если при создании явно не указывается TableSpace) выковыривать из System.
Из-под USER Sys As DBA выполняешь
Код

ALTER USER Anet DEFAULT TABLESPACE Users

2. Из-под USER Anet выполняешь
Код

Create Table myTable As select * from system.myTable

3. Из-под USER Sys As DBA выполняешь DROP исходной таблицы

Возможный подводный камень - скопируются ли LOB'ы? Под рукой нет похожей таблицы, поэтому не тестировал.
Если содержимое базы ценное - предварительно сделай полный dump smile


--------------------
Хотите поговорить об этом?
PM   Вверх
Anet
Дата 17.1.2005, 10:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 41
Регистрация: 8.1.2005
Где: Алтайский край

Репутация: нет
Всего: нет





Т.е. , если код создания таблицы ранее был:
Цитата

CREATE TABLE myTable
(<some fields>)
STORAGE (...)
TABLESPACE SYSTEM...


то после

Цитата

ALTER USER Anet DEFAULT TABLESPACE Users
Create Table myTable As select * from system.myTable


будет

Цитата

CREATE TABLE myTable
(<some fields>)
STORAGE (...)
TABLESPACE USERS...

Правильно я поняла твой совет?
Конечно, слово "код" или "скрипт" не совсем подходят, но...


Это сообщение отредактировал(а) Anet - 17.1.2005, 10:45
PM MAIL ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Oracle"
Zloxa
LSD

Данный раздел предназначен для обсуждения проблем с Oracle Database, другие продукты Oracle здесь не обсуждаются. Просьба при создании темы, придерживаться следующих правил:

  • при создании темы давайте ей осмысленное название, описывающее суть проблемы
  • указывайте используемую версию базы, способ соединения и язык программирования
  • при ошибках обязательно приводите код ошибки и сообщение сервера
  • приводите код в котором возникла ошибка, по возможности дайте тестовый пример демонстрирующий ошибку
  • при вставке кода используйте соответсвующие теги: [code=sql] [/code] для подсветки SQL и PL/SQL кода, [code=java] [/code] - для Java, и т.д.

  • документация по Oracle: 9i, 10g, 11g
  • книги по Oracle можно поискать здесь
  • действия модераторов можно обсудить здесь

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Zloxa, LSD.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Oracle | Следующая тема »


 




[ Время генерации скрипта: 0.0643 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.