Postgresql вставить несколько строк - не удалось - PullRequest
5 голосов
/ 22 августа 2010

Я использую PostgreSQL 8.1.11.

И я схожу с ума. Почему я не могу использовать базовый оператор SQL в качестве INSERT?

Я предоставляю:

INSERT INTO the_leads_details ( id, lead_id, question_id, i_value, c_value ) VALUES
( 1, 1, 1, NULL, '4500' ), ( 2, 1, 2,    1, NULL );

                         ^ this comma is a problem

Чего мне не хватает? Это похоже на базовый оператор SQL INSERT для вставки нескольких строк. Моя проблема связана с моей версией PostgreSQL?

Я вставляю много строк и пытаюсь оптимизировать вставку нескольких строк вместо размещения нескольких вставок.

Ответы [ 4 ]

14 голосов
/ 22 августа 2010

Многострочный синтаксис INSERT не поддерживается в PostgreSQL 8.1, вам необходимо обновить его до версии 8.2 или новее (и если вы обновляете сегодня, вам действительно следует обновить систему до 8.4, а не 8.2!)

Другая причина, как упомянул Фрэнк в комментарии, в том, что версия 8.1 выйдет из строя в ноябре, так что действительно пришло время начать исследование обновления.

4 голосов
/ 22 августа 2010

Я не уверен, что Postgresl 8.1 поддерживает несколько строк в VALUES.Синтаксис:

INSERT INTO table [ ( column [, ...] ) ]
    { DEFAULT VALUES | VALUES ( { expression | DEFAULT } [, ...] ) | query }

http://www.postgresql.org/docs/8.1/static/sql-insert.html

2 голосов
/ 08 января 2012

Я знаю, что это старая тема, но это будет работать:

INSERT INTO the_leads_details ( id, lead_id, question_id, i_value, c_value ) (
SELECT 1, 1, 1, NULL, '4500' 
UNION SELECT 2, 1, 2,    1, NULL 
);
1 голос
/ 22 августа 2010

Синтаксис правильный, вы уверены, что проблема в запятой?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...