COPY tbl FROM STDIN;
nie jest obsługiwany przez pgAdmin.
Otrzymujesz zwykły błąd składni, ponieważ Postgres pobiera dane jako kod SQL.
Cztery możliwe rozwiązania:
1. Użyj wielowierszowego INSERT
zamiast tego:
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')
;
Zwróć uwagę na inną składnię (SQL) dla wartości jako ciągów lub literałów numerycznych.
Możesz wygenerować dane za pomocą pg_dump
za pomocą --inserts
. Powiązane:
- Eksportuj określone wiersze z tabeli PostgreSQL jako skrypt INSERT SQL
2. Lub wywołaj swój skrypt w wierszu poleceń za pomocą psql
. Jako użytkownik systemu postgres
:
psql -f beer.sql -U my_login_role -d db_name
Baza danych (-d
) i rola logowania (-U
dla „Użytkownika”) można pominąć, jeśli wartości domyślne są w porządku. Przykłady składni:
- Utwórz bazę danych Postgres za pomocą pliku wsadowego z [szablon], [kodowanie], [właściciel] i plik .sql
Upewnij się, że istnieje znacznik końca danych (\.
) dla domyślnego text
format. (Masz to.) Instrukcja:
Koniec danych może być reprezentowany przez pojedynczą linię zawierającą kropkę justbackslash (\.
). Znacznik końca danych nie jest konieczny przy odczycie z pliku, ponieważ koniec pliku służy doskonale; jest to potrzebne tylko podczas kopiowania danych do lub z aplikacji klienckich przy użyciu protokołu klienta przed wersją 3.0.
3. Lub przenieś swoje dane do osobnego pliku na serwerze , powiedz 'beer_data.csv' i użyj COPY .. FROM 'filename'
w twoim skrypcie:
COPY beer (name, tags, alcohol, brewery, id, brewery_id, image)
FROM '/path/to/beer_data.csv';
Co działa tak czy inaczej. Potrzebujesz jednak uprawnień superużytkownika. Instrukcja:
[...] COPY
nazywanie pliku lub polecenia jest dozwolone tylko dla superużytkowników bazy danych lub użytkowników, którym przyznano jedną z domyślnych rólpg_read_server_files
, pg_write_server_files
lubpg_execute_server_program
, ponieważ umożliwia odczytywanie lub zapisywanie dowolnego pliku lub uruchamianie programu, do którego serwer ma uprawnienia dostępu.
(pg_read_server_files
, pg_write_server_files
i pg_execute_server_program
są nowe w Postgres 11.)
4. Lub przeczytaj plik lokalny dla klienta za pomocą meta-polecenia psql \copy
. Zobacz:
- Jak zaktualizować wybrane wiersze wartościami z pliku CSV w Postgresie?
- Jak używać \copy w postgresql z pgadmin4