В 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
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
находится в переменных вашей среды.