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

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

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

Я был создать базу данных, как это и выполнить файл.sql

3 ответа

Решение
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

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

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

3. Или переместите ваши данные в отдельный файл (локальный по отношению к серверу!), Скажите "beer_data.csv" и используйте 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

Эта командная строка запускает обновление таблицы базы данных.

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

Мое решение: поместите файл SQL в корневой каталог, например C:\.

Например, моя база данных называется cities и мой файл SQL cidade.sql.

Открытым cmd и введите:

      psql -U postgres -d cities < C:\cidade.sql

Аргументы:

  • -U [user]
  • -d [database]

Вам будет предложено ввести пароль. Не забудьте проверить, если psql находится в переменных вашей среды.

Другие вопросы по тегам