COPY tbl FROM STDIN;
wordt niet ondersteund door pgAdmin.
Je krijgt een duidelijke syntaxisfout omdat Postgres de gegevens als SQL-code ophaalt.
Vier mogelijke oplossingen:
1. Gebruik een INSERT
met meerdere rijen in plaats daarvan:
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')
;
Let op de verschillende (SQL) syntaxis voor waarden als tekenreeksen of numerieke letterlijke waarden.
U kunt de gegevens genereren met pg_dump
met behulp van --inserts
. Gerelateerd:
- Specifieke rijen uit een PostgreSQL-tabel exporteren als INSERT SQL-script
2. Of roep uw script op de opdrachtregel aan met psql
. Als systeemgebruiker postgres
:
psql -f beer.sql -U my_login_role -d db_name
Database (-d
) en inlogrol (-U
voor "Gebruiker") kan worden weggelaten als de standaardinstellingen in orde zijn. Voorbeelden van syntaxis:
- Maak Postgres-database met behulp van een batchbestand met [template],[encoding],[owner] en een .sql-bestand
Zorg ervoor dat er een einde-van-gegevensmarkering is (\.
) voor standaard text
formaat. (Dat heb je.) De handleiding:
Het einde van de gegevens kan worden weergegeven door een enkele regel met een backslash-periode (
\.
). Een einde-van-gegevensmarkering is niet nodig bij het lezen van een bestand, omdat het einde van het bestand perfect dienst doet; is alleen nodig bij het kopiëren van gegevens van of naar clienttoepassingen met behulp van het clientprotocol van vóór 3.0.
3. Of verplaats uw gegevens naar een apart bestand op de server , zeg 'beer_data.csv' en gebruik COPY .. FROM 'filename'
in je script:
COPY beer (name, tags, alcohol, brewery, id, brewery_id, image)
FROM '/path/to/beer_data.csv';
Wat hoe dan ook werkt. U hebt echter superuser-privileges nodig. De handleiding:
[...]
COPY
het benoemen van een bestand of opdracht is alleen toegestaan voor database-superusers of gebruikers die een van de standaardrollen hebben gekregenpg_read_server_files
,pg_write_server_files
, ofpg_execute_server_program
, omdat het elk bestand kan lezen of schrijven of een programma draait waartoe de server toegangsrechten heeft.
(pg_read_server_files
, pg_write_server_files
en pg_execute_server_program
zijn nieuw in Postgres 11.)
4. Of lees een bestand lokaal voor de client met het psql-meta-commando \copy
. Zie:
- Hoe kan ik geselecteerde rijen bijwerken met waarden uit een CSV-bestand in Postgres?
- Hoe \copy te gebruiken in postgresql met pgadmin4