В 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
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