Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Объединить таблицы по маске / 6 сообщений из 6, страница 1 из 1
21.10.2015, 13:02
    #39082323
HasT
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Объединить таблицы по маске
Добрый день!
Помогите пожалуйста с созданием функции, которая будет объединять таблицы по маске.
Пример таблиц:
table name"t_2015_09_01_z15"
"t_2015_09_02_z15"
"t_2015_09_03_z15"
"t_2015_09_04_z15"
"t_2015_09_05_z15"
...
"t_2015_10_01_z15"
"t_2015_10_02_z15"
"t_2015_10_03_z15"
"t_2015_10_04_z15"
"t_2015_10_05_z15"
...

Вид функции, которую необходимо создать
Код: plsql
1.
SELECT maskunion('public', 'mask', 'tablename');


public - название схемы.
mask - название маски таблиц, которые необходимо объединить. Например, "t_2015_" - объединит все таблицы, "t_2015_10_" - объединит таблицы только с строкой "t_2015_10_" в названии таблицы.
tablename - название создаваемой таблицы.

Спасибо!
...
Рейтинг: 0 / 0
21.10.2015, 13:12
    #39082330
Author the new one
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Объединить таблицы по маске
...
Рейтинг: 0 / 0
21.10.2015, 17:48
    #39082753
HasT
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Объединить таблицы по маске
сделал следующую функцию:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
DROP FUNCTION maskunion(text,text,text);
--
CREATE OR REPLACE FUNCTION maskunion(IN _schema TEXT, IN _parttionbase TEXT, TEXT) 
RETURNS void 
LANGUAGE plpgsql
AS
$$
DECLARE
    row     record;
BEGIN
    EXECUTE 'DROP TABLE IF EXISTS ' || $3;
    EXECUTE 'CREATE TABLE ' || $3 || '
        (
          ogc_fid integer,
          wkb_geometry geometry(Geometry,4326),
          date character varying,
          x character varying,
          y character varying,
          z character varying,
          count character varying
        )';

    FOR row IN 
        SELECT
            table_schema,
            table_name
        FROM
            information_schema.tables
        WHERE
            table_type = 'BASE TABLE'
        AND
            table_schema = _schema
        AND
            table_name ILIKE (_parttionbase || '%')
    LOOP
        EXECUTE 'INSERT INTO ' || $3 || ' SELECT * FROM ' || quote_ident(row.table_name);
    END LOOP;
END;
$$;

SELECT maskunion('public', 'tiles_2015_10_', 'newtable');
...
Рейтинг: 0 / 0
21.10.2015, 19:49
    #39082840
Павел Лузанов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Объединить таблицы по маске
HasTmask - название маски таблиц, которые необходимо объединить. Например, "t_2015_" - объединит все таблицы, "t_2015_10_" - объединит таблицы только с строкой "t_2015_10_" в названии таблицы.
tablename - название создаваемой таблицы.

Не до конца понял требования, но посмотри в сторону наследования таблиц.
По такому принципу в Постгресе секционирование сделано.
...
Рейтинг: 0 / 0
22.10.2015, 08:56
    #39083026
HasT
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Объединить таблицы по маске
Павел ЛузановHasTmask - название маски таблиц, которые необходимо объединить. Например, "t_2015_" - объединит все таблицы, "t_2015_10_" - объединит таблицы только с строкой "t_2015_10_" в названии таблицы.
tablename - название создаваемой таблицы.

Не до конца понял требования, но посмотри в сторону наследования таблиц.
По такому принципу в Постгресе секционирование сделано.
Спасибо за совет, посмотрю.
...
Рейтинг: 0 / 0
22.10.2015, 15:11
    #39083733
Павел Лузанов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Объединить таблицы по маске
HasTПавел Лузановпропущено...

Не до конца понял требования, но посмотри в сторону наследования таблиц.
По такому принципу в Постгресе секционирование сделано.
Спасибо за совет, посмотрю.
Кстати, есть на русском .
...
Рейтинг: 0 / 0
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Объединить таблицы по маске / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]