powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Объединить таблицы по маске
6 сообщений из 6, страница 1 из 1
Объединить таблицы по маске
    #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
Объединить таблицы по маске
    #39082330
Author the new one
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Объединить таблицы по маске
    #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
Объединить таблицы по маске
    #39082840
Павел Лузанов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HasTmask - название маски таблиц, которые необходимо объединить. Например, "t_2015_" - объединит все таблицы, "t_2015_10_" - объединит таблицы только с строкой "t_2015_10_" в названии таблицы.
tablename - название создаваемой таблицы.

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

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

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


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