Оригинальный Вопрос

From: Владимир Комаров <vlads(at)sibnet(dot)ru>
To: <pgsql-ru-general(at)postgresql(dot)org>
Subject: Оригинальный Вопрос
Date: 2015-09-29 18:05:02
Message-ID: 019c01d0fae1$5d3d2be0$17b783a0$@sibnet.ru
Views: Whole Thread | Raw Message | Download mbox | Resend email
Thread:
Lists: pgsql-ru-general

Добрый день

Есть вопрос:

Есть две базы с таблицей

CREATE TABLE sys.files(

bd character(3),

file oid,

dat timestamp without time zone DEFAULT now()

)WITH ( OIDS=FALSE);

К базе1 подключена база2 для передачи данных в основную (файлы)

CREATE FOREIGN TABLE kku.fkas

(bd character(3) ,

file oid ,

dat timestamp without time zone )

SERVER bd2

OPTIONS (table_name 'files', schema_name 'sys');

В таблицах хранятся файлы. (IOD)

Если я просто перекидываю из одной таблицы в другую данные

INSERT INTO kku.files (select * FROM kku.fkas);

Данные передаются, но естественно, только уже ненужные ссылки на OIDы

А как перетащить именно данные? Направьте, пожалуйста.

PS данные загружаются при помощи php по принципу такого алгоритма:

//Помещение файла в таблицу

$file_handle=fopen("$userfile_name", "rb"); //Открываем курсор файла,
который мы только что закачали на сервер для бинарного чтения (rb)

$file_content = fread($file_handle, filesize($userfile_name)); //Читаем
файл в переменную

fclose($file_handle); //Закрываем курсор

pg_exec ($conn, "BEGIN;"); //Работа с lo требует транзакции

$oid = pg_locreate ($conn); //Создаем большой объект

$handle = pg_loopen ($conn, $oid, "wb"); //Открываем его для записи (на
всякий случай к флагу w добавляем b для бинарников)

pg_lowrite ($handle, $file_content); //Записываем в объект содержимое
файла

@pg_exec($conn, "INSERT INTO kku.filses (bd, file) VALUES
('BD1',$oid);");

Responses

Browse pgsql-ru-general by date

  From Date Subject
Next Message Dmitry Igrishin 2015-09-29 20:07:04 Re: [pgsql-ru-general] Оригинальный Вопрос
Previous Message Nikolay Samokhvalov 2015-09-25 15:52:00 Приглашение: #PostgreSQLRussia 14.10.2015, офис Яндекса, Москва