| 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);");
| 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, офис Яндекса, Москва |