2015-12-19 2 views
2

Для моего проекта Цель Я хочу создать таблицу из данных, полученных из представления. Я использую основное утверждение:Я хочу создать таблицу из данных, полученных из представления

CREATE TABLE TABLE_NAME AS (SELECT * FROM VIEW_NAME) ; 

Проблемы в том, что около 3 ядер данных будут получены с этой точкой зрения и как вид имеет присоединяются на многих столах и применяются много условий, производительность зрения бит медленный. Когда я пытаюсь использовать базовый синтаксис (как упоминалось выше) после того, как сессия завершится, и, следовательно, она терпит неудачу. Любой альтернативный способ сделать это?

+0

Выполнение этой задачи непосредственно в базе данных или через код конца интерфейса? если вы используете его с объектом команды, используйте команду 'command.timeout = 0' –

+0

, просто создайте таблицу, используя' CREATE TABLE table_name AS (SELECT * FROM view_name LIMIT 0); 'и экспортируйте представление в csv, используя [copy] (http://www.postgresql.org/docs/9.4/static/sql-copy.html) и импортировать его в созданную таблицу, посмотрите https://wiki.postgresql.org/wiki/COPY и http: //stackoverflow.com/questions/17662631/how-to-copy-from-csv-file-to-postgresql-table-with-headers-in-csv-file –

ответ

1

альтернативный способ будет использовать Postgres Copy option.but, вам нужно будет создать схему таблицы перед копированием. поэтому фактический запрос будет

CREATE TABLE yourtable AS (SELECT * FROM view With no Data);Copy select * from view to yourtable; 

Вы можете следить за предоставленную ссылку, чтобы узнать дополнительные параметры, чтобы увеличить производительность копирования command.hope это помогает.

+0

Сторона Примечание: [Используйте 'Postgres/PostgreSQL'' Postgre'] (http://stackoverflow.com/tags/postgresql/info) –