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