COPY tbl FROM STDIN;
stöds inte av pgAdmin.
Du får ett vanligt syntaxfel eftersom Postgres får data som SQL-kod.
Fyra möjliga lösningar:
1. Använd en INSERT
med flera rader istället:
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')
;
Notera den olika (SQL) syntaxen för värden som sträng eller numeriska bokstaver.
Du kan generera data med pg_dump
med --inserts
. Relaterat:
- Exportera specifika rader från en PostgreSQL-tabell som INSERT SQL-skript
2. Eller ring ditt skript på kommandoraden med psql
. Som systemanvändare postgres
:
psql -f beer.sql -U my_login_role -d db_name
Databas (-d
) och inloggningsroll (-U
för "Användare") kan utelämnas om standardinställningarna är ok. Syntaxexempel:
- Skapa Postgres-databas med batchfil med [mall],[kodning],[ägare] och en .sql-fil
Se till att det finns en markör för slutdata (\.
) för standard text
formatera. (Du har det.) Manualen:
Slutet på data kan representeras av en enda rad som innehåller justbackslash-period (
\.
). En dataslutmarkör är inte nödvändig när man läser från en fil, eftersom slutet av filen fungerar utmärkt; Det behövs bara när du kopierar data till eller från klientapplikationer med klientprotokollet pre-3.0.
3. Eller flytta dina data till en separat fil på servern , säg 'beer_data.csv' och använd COPY .. FROM 'filename'
i ditt manus:
COPY beer (name, tags, alcohol, brewery, id, brewery_id, image)
FROM '/path/to/beer_data.csv';
Vilket fungerar åt båda hållen. Du behöver dock superanvändarprivilegier. Manualen:
[...]
COPY
att namnge en fil eller ett kommando är endast tillåtet för databassuperanvändare eller användare som har tilldelats en av standardrollernapg_read_server_files
,pg_write_server_files
, ellerpg_execute_server_program
, eftersom det tillåter läsning eller skrivning av alla filer eller kör ett program som servern har behörighet att komma åt.
(pg_read_server_files
, pg_write_server_files
och pg_execute_server_program
är nya i Postgres 11.)
4. Eller läs en fil lokalt för klienten med psql-metakommandot \copy
. Se:
- Hur uppdaterar man valda rader med värden från en CSV-fil i Postgres?
- Hur man använder \copy i postgresql med pgadmin4