Не выполняется запрос COPY

Приветствую всех!

С PostgreSQL дело ранее не имел, только с MySQL.
Дали бекап БД, который как ни как не выполняется.

COPY groups (id, name, access) FROM stdin;
1 user 1
2 operator 2
3 expert 4
4 expert_operator 8
5 expert_admin 12
6 admin    31
\.

Такой запрос в файле бекапа - не выполняется. В чем ошибка?
pgAdmin говорит
ERROR: syntax error at or near "1"
LINE 2: 1 user 1
        ^
 
********** Ошибка **********
 
ERROR: syntax error at OR near "1"
SQL state: 42601
Характеристика:44

Понятно, что синтаксическая ошибка :) Только как я понял сам же запрос pgadmin и составлял ;)

Опции просмотра комментариев

Выберите предпочитаемый вами способ показа комментариев и нажмите "Сохранить настройки" для активации изменений.

Почитайте

Почитайте синтаксис команды. У меня подозрение, что разделитель какой-то не такой какой нужен.

http://postgresql.ru.net/manual/sql-copy.html

Почитал.. чуть

Почитал..
чуть изменил запрос на такой

COPY groups (id, name, access) FROM STDIN WITH  DELIMITER ' ' 
1 user 1
2 operator 2
3 expert 4
4 expert_operator 8
5 expert_admin 12
6 admin 31
\.

Структура таблицы такая:
CREATE TABLE groups (
    id bigint NOT NULL,
    name text,
    access integer
);

К сожалению не помогает..

и все таки непонятно

COPY "tst"."tst" ("Id", "Name", "Opt") FROM stdin;
1 '1' '11'
2 '2' '22'
\.
не ругается, но и записи не вставляет.
Запускаю в студии. Почему же оно не вставляет данные???

Запустите через psql. Если

Запустите через psql. Если сработает, то вопросы не сюда, а к разрабочикам студии, хотя я могу предположить. Дело в том что stdin:)

COPY предназначен для

COPY предназначен для пакетной загрузки/выгрузки больших объемов данных и берет данные из потока или файла.

SELECT * FROM foo;
--ID	ParentID	Caption
--3	21	texxxt
------------------------------------------------
 
copy "foo" TO $$C:\Program Files\PostgreSQL\8.3\DATA\foo_out.txt$$;
--foo_out.txt
--3	21	texxxt
---------------------------------------------
--foo_in.txt
--777
--888
--999
-----------
COPY "foo" ("ID") FROM 'foo_in.txt';--по умолчанию C:\Program Files\PostgreSQL\8.3\data\
SELECT * FROM foo;
--ID	ParentID	Caption
--3	21	texxxt
--777		------
--888		------
--999		------

я посмотрел - у

я посмотрел - у меня такой же синтаксис команды прекрасно работает. Правда в pgAdmin'е проверить не смог (почему-то не активна кнопка ОК в окне восстановления из бекапа) Но в EMS SQL Manager все работает.

Вообщем ещё раз

Вообщем ещё раз прочитал мануал, там написано

You must have SELECT privilege ON the TABLE whose VALUES are 
READ BY COPY TO, AND INSERT privilege ON the TABLE INTO which VALUES are inserted BY COPY FROM.

Т.е. нужно назначить привелегию на таблицу для соотв. функций. Поискал и в мануале, и в pgAdmin. Ничего подобного не нашел.
Может проблема в этом?
Правда казус: сижу то я от суперюзера..

В этом случае, я

В этом случае, я полагаю, была бы совсем другая ошибка.

Попробуйте сделать бекап со своей базы своим pgAdmin'ом и посмотрите как он сформирует файлик, потом попробуйте загрузить его, что он на это скажет..

Мистика

Чёрт побери - вот сволочь то а. Единственное, что на ум приходит.

Сделал бекап, там такая форма

COPY groups (id, name, access) FROM stdin;
1	user	1
7	bIG TEST	32
\.

Причём этот же код не выполняется! Вот абсурд. Пепец блин.

Я вот посмотрел

Я вот посмотрел на ваше и на бэкап и вижу, что в бэкапе разделитель табуляция, а у вас похоже частично пробелы, частично табуляция. В качестве разделителя должен быть ОДИН символ. Если табуляция, то одна, если пробел, то ОДИН!

сейчас

сейчас переносил свою базу на другой сервер (довольно муторное занятие оказалось!)
...и действительно COPY не стала ничего делать, когда я ее запускал из редактора SQL

А вам выражение

А вам выражение "FROM stdin" ни о чём не говорит? :)

говорит... я

говорит... я пробовал из файла D:\бла-бла-бла а но не смог найти мой файл

Опции просмотра комментариев

Выберите предпочитаемый вами способ показа комментариев и нажмите "Сохранить настройки" для активации изменений.

Back to top

(С) Виктор Вислобоков, 2008-2023