В PostgreSQL, как вставить данные с помощью команды COPY?

у меня проблема при запуске 1 проекта NodeJs с базой данных PostgreSQL. У меня есть ошибка при попытке вставить данные в pgAdmin с помощью .

COPY beer (name, tags, alcohol, brewery, id, brewery_id, image) FROM stdin;

Bons Voeux  blonde  9.5 Brasserie Dupont    250 130 generic.png

эти данные в суть:

эта ошибка:

ERROR: syntax error at or near "Bons"
SQL state: 42601
Character: 1967

I was create database like this and execute file .sql:

2 ответов


COPY tbl FROM STDIN;

не поддерживается pgAdmin.
Вы получаете простую синтаксическую ошибку, потому что Postgres получает данные в виде кода SQL.

три возможные решения:

1. используйте многорядный INSERT вместо:

INSERT INTO beer(name, tags, alcohol, brewery, id, brewery_id, image)
VALUES 
  ('Bons Voeux', 'blonde', 9.5, 'Brasserie Dupont', 250, 130, 'generic.png')
, ('Boerke Blond', 'blonde', 6.8, 'Brouwerij Angerik', 233, 287 'generic.png')
;

обратите внимание на другой синтаксис (SQL) для значений в виде строковых или числовых литералов.

вы можете генерировать данные с pg_dump используя --inserts. По теме:

2. или назвать свой скрипт в командной строке с помощью psql. Как пользователь системы postgres:

psql beer -f beer.sql

убедитесь, что есть маркер конца данных (\.) по умолчанию . (У вас есть это.) документация:

конец данных может быть представлен одной строкой содержащий только обратная косая черта-период (\.). Маркер конца данных не требуется, когда чтение из файла, так как конец файла служит отлично; это требуется только при копировании данных в клиентские приложения или из них с помощью клиентский протокол до 3.0.

3. или переместить данные в отдельный файл (локальный сервер!), сказать beer_data.КШМ и использовать COPY .. FROM 'filename' в свой скрипт:

COPY beer (name, tags, alcohol, brewery, id, brewery_id, image) FROM '/path/to/beer_data.csv';

что работает в любом случае.


первый этап:

создать базу данных belgianbeers на pgAdmin.

второй шаг: Откройте приглашение и запустите эту командную строку:

psql-U postgres-d belgianbeers-A-f beers.в SQL

в этой командной строке выполняются таблицы базы данных e update.

- U = имя пользователя postgres