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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как вставить изображение в БД ORACLE 
:(
    Опции темы
darkvivi
Дата 11.10.2013, 16:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



 Здравствуйте! Мне понадобилось добавить в базу данных изображение. По идее, для этого нужен BLOB. 

Нашёл на просторах Интернета:
Код


CREATE TABLE image{
 name text, raster oid};
 INSERT INTO image (name, raster) VALUE('Beautiful image', lo_import('/etc/motd'));
 SELECT lo_export(image.raster, '/tmp/motd') FROM image WHERE name = 'Beautiful image';


 А куда, интересно, ссылается lo_import? Где скрываются таблицы, там же ведь надо искать?
 Как ещё можно реализовать BLOB?
 
 Ещё накопал: 
 Это объявление таблицы
Код

 CREATE TABLE pdm (
dname VARCHAR2(30), -- directory name
sname VARCHAR2(30), -- subdirectory name
fname VARCHAR2(30), -- file name
iblob BLOB); -- image file

Ещё вот что нашёл:
create table graphics_table (
Код

  bfile_id number,
  bfile_desc varchar2(30),
  bfile_loc bfile,
  bfile_type varchar2(4));

INSERT INTO graphics_table
   VALUES(4,'April Book of Days Woodcut',bfilename('GIF_FILES','APRIL.JPG'),'JPEG');
INSERT INTO graphics_table
  VALUES(30,'',bfilename('GIF_FILES','SHAPIROS.GIF'),'GIF'); 


'GIF_FILES' это папка? А можно ли путь от диска прописать? Думаю, так было бы удобнее...
 И хорошо, если удастся заинсертить картинку, но как и куда её потом можно вывести?
 Всем огромное спасибо, кто поможет)

Это сообщение отредактировал(а) darkvivi - 11.10.2013, 17:41
PM MAIL   Вверх
Zloxa
Дата 11.10.2013, 17:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


Профиль
Группа: Завсегдатай
Сообщений: 3473
Регистрация: 12.9.2008

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



Цитата(darkvivi @  11.10.2013,  17:42 Найти цитируемый пост)
А куда, интересно, ссылается lo_import? 

Почитайте в докментации PostgreSQL. smile 

Это сообщение отредактировал(а) Zloxa - 11.10.2013, 17:38


--------------------
Достоверно известно, что 89% людей доверяют статистике взятой с потолка smile
PM   Вверх
darkvivi
Дата 11.10.2013, 17:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



 А как быть с папками? как сделать путь от диска?
PM MAIL   Вверх
Zloxa
Дата 11.10.2013, 17:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


Профиль
Группа: Завсегдатай
Сообщений: 3473
Регистрация: 12.9.2008

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



darkvivi, еще раз повторяю для особо внимательныых. Ты прочел инструкцию не от оракла. Это функция постгра


--------------------
Достоверно известно, что 89% людей доверяют статистике взятой с потолка smile
PM   Вверх
darkvivi
Дата 11.10.2013, 17:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



 Хорошо) попробую разобраться)

Думаю, стоит опереться на bfilename, он практичнее.. поищу к нему документацию, всё, нашёл!

Код

CREATE TABLE lob_table (id NUMBER, doc BLOB);
INSERT INTO lob_table VALUES (1, EMPTY_BLOB()); 


CREATE DIRECTORY exampleDir AS 'c:\tmp';
DECLARE  src_lob  BFILE := BFILENAME('exampleDir', 'me.GIF');
  dest_lob BLOB;
BEGIN
  INSERT INTO lob_table VALUES(2, EMPTY_BLOB())
     RETURNING doc INTO dest_lob;

  DBMS_LOB.OPEN(src_lob, DBMS_LOB.LOB_READONLY);
  DBMS_LOB.LoadFromFile( DEST_LOB => dest_lob,
                         SRC_LOB  => src_lob,
                         AMOUNT   => DBMS_LOB.GETLENGTH(src_lob) );
  DBMS_LOB.CLOSE(src_lob);

  COMMIT;
END;
/

  
Выводит, что 
 "non-existent directory or file for %s operation"
*Cause:    Attempted to access a directory that does not exist, or attempted
           to access a file in a directory that does not exist.
*Action:   Ensure that a system object corresponding to the specified
           directory exists in the database dictionary, or
           make sure the name is correct.
Хотя файл лежит на месте..


Это сообщение отредактировал(а) darkvivi - 11.10.2013, 20:44
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "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.0962 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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