создание слоя из выборки

Ответить
Анна
Завсегдатай
Сообщения: 386
Зарегистрирован: 07 фев 2004, 14:31
Репутация: 7
Откуда: Лозанна
Контактная информация:

создание слоя из выборки

Сообщение Анна » 05 окт 2010, 10:59

и еще один вопрос сразу:)

есть слой загруженный в базу, делаю select'ом выборку по некоторому столбцу и теперь хочу сохранить выборку отдельной таблицей (слоем) в базе.
Как это сделать?

KolesovDmitry
Гуру
Сообщения: 810
Зарегистрирован: 22 авг 2007, 14:58
Репутация: 123
Откуда: Казань

Re: создание слоя из выборки

Сообщение KolesovDmitry » 05 окт 2010, 11:28

Анна писал(а): есть слой загруженный в базу, делаю select'ом выборку по некоторому столбцу и теперь хочу сохранить выборку отдельной таблицей (слоем) в базе.
У select есть модификация для сохранения результата запроса в таблицу: SELECT INTO.

Анна
Завсегдатай
Сообщения: 386
Зарегистрирован: 07 фев 2004, 14:31
Репутация: 7
Откуда: Лозанна
Контактная информация:

Re: создание слоя из выборки

Сообщение Анна » 05 окт 2010, 12:06

супер, спасибо огромное!

Анна
Завсегдатай
Сообщения: 386
Зарегистрирован: 07 фев 2004, 14:31
Репутация: 7
Откуда: Лозанна
Контактная информация:

Re: создание слоя из выборки

Сообщение Анна » 05 окт 2010, 17:17

Еще возник вопрос посложнее:)

Есть таблица точек встреч видов (occurences_tbl). В ней колонка "species" - название вида. Нужно в цикле пройтись по всем уникальным названиям видов и экспортировать все точки встреч для каждого отдельного вида в отдельную же таблицу названную именем вида. Видов более 500, а точек встреч около 200 000, то есть руками ну никак не хочется делать.

Написала вот такой запрос:

Код: Выделить всё

FOR unique_species_names IN SELECT count FROM occurences_tbl GROUP BY species LOOP
	EXECUTE SELECT * INTO  quote_ident(unique_species_names) FROM  occurences_tbl WHERE occurences_tbl.species = quote_ident(unique_species_names);
END LOOP;
но уверена, что не правильный синтаксис. Подскажите, пожалуйста куда смотреть? что корректировать?

Аватара пользователя
Denis Rykov
Гуру
Сообщения: 3376
Зарегистрирован: 11 апр 2008, 21:09
Репутация: 529
Ваше звание: Author
Контактная информация:

Re: создание слоя из выборки

Сообщение Denis Rykov » 05 окт 2010, 19:35

Поставленную задачу можно решить, например, с помощью PL/Python, если Python присутствует в системе:

Код: Выделить всё

CREATE PROCEDURAL LANGUAGE 'plpythonu' HANDLER plpython_call_handler;
CREATE OR REPLACE FUNCTION tbls()
  RETURNS text
AS $$
  rv = plpy.execute("SELECT DISTINCT species from occurences_tbl where species<>''")
  for i in range(len(rv)):
      plpy.execute("SELECT * INTO "+rv[i]['species']+" from occurences_tbl where species='"+rv[i]['species']+"'")
$$ LANGUAGE plpythonu;
select tbls();
Spatial is now, more than ever, just another column- The Geometry Column.

Ответить

Вернуться в «PostGIS/PostgreSQL»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 13 гостей