Извлечение данных из нескольких баз данных Oracle в виде единого набора результатов с использованием PHP oci8 с нумерацией страниц

  1. У меня есть 5 разных баз данных Oracle, а именно FDB1617, FDB1516, FDB1415, FDB1413 и FDB1312.
  2. Структуры их баз данных одинаковы.
  3. Я хотел бы получить данные из всех баз данных в одном запросе, используя PHP и OCI8 с разбиением на страницы.

Например:

SELECT ID,ContactName, Phone FROM FDB1617

должен получать данные из всех 5 баз данных;

Следующий код можно использовать для разбиения на страницы

    public function execFetchPage($sql, $action, $firstrow = 1, $numrows = 1, $bindvars = array()) {
        $query = 'SELECT * FROM (SELECT a.*, ROWNUM AS rnum FROM (' . $sql . ') a WHERE ROWNUM <= :sq_last) WHERE :sq_first <= RNUM';
        array_push($bindvars, array(':sq_first', $firstrow, -1));
        array_push($bindvars, array(':sq_last', $firstrow + $numrows - 1, -1));
        $res = $this->execFetchAll($query, $action, $bindvars);
        return($res);
    }

Помогите пожалуйста и заранее спасибо


person patapon    schedule 06.01.2017    source источник
comment
Есть ли какая-то конкретная причина, по которой у вас есть 5 одинаковых баз данных?   -  person    schedule 06.01.2017
comment
Индивидуальная база данных для каждого финансового года   -  person patapon    schedule 06.01.2017


Ответы (1)


Можно использовать ссылки на базу данных и UNION выдавать несколько запросов, возвращая один набор результатов.

CREATE DATABASE LINK link_name CONNECT TO username IDENTIFIED BY password USING connection_string;
...

А потом:

SELECT ID, ContactName, Phone FROM table_name
UNION
SELECT ID, ContactName, Phone FROM table_name@link_name
UNION
...
person timclutton    schedule 06.01.2017