COPY tbl FROM STDIN;
er ikke understøttet af pgAdmin.
Du får en almindelig syntaksfejl, fordi Postgres får dataene som SQL-kode.
Fire mulige løsninger:
1. Brug en INSERT
med flere rækker i stedet:
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')
;
Bemærk den forskellige (SQL) syntaks for værdier som streng eller numeriske bogstaver.
Du kan generere dataene med pg_dump
ved hjælp af --inserts
. Relateret:
- Eksportér specifikke rækker fra en PostgreSQL-tabel som INSERT SQL-script
2. Eller kald dit script på kommandolinjen ved hjælp af psql
. Som systembruger postgres
:
psql -f beer.sql -U my_login_role -d db_name
Database (-d
) og login-rolle (-U
for "Bruger") kan udelades, hvis standardindstillingerne er ok. Syntakseksempler:
- Opret Postgres-database ved hjælp af batchfil med [skabelon],[kodning],[ejer] og en .sql-fil
Sørg for, at der er en slut-på-data-markør (\.
) for standard text
format. (Det har du.) Manualen:
Slut på data kan repræsenteres af en enkelt linje indeholdende justbackslash-periode (\.
). En ende-på-data-markør er ikke nødvendig, når du læser fra en fil, da slutningen af filen fungerer perfekt; det er kun nødvendigt, når der kopieres data til eller fra klientapplikationer ved hjælp af pre-3.0 klientprotokol.
3. Eller flyt dine data til en separat fil på serveren , sig 'beer_data.csv' og brug COPY .. FROM 'filename'
i dit script:
COPY beer (name, tags, alcohol, brewery, id, brewery_id, image)
FROM '/path/to/beer_data.csv';
Hvilket virker begge veje. Du har dog brug for superbrugerrettigheder. Manualen:
[...] COPY
navngivning af en fil eller kommando er kun tilladt for databasesuperbrugere eller brugere, der er tildelt en af standardrollernepg_read_server_files
, pg_write_server_files
, ellerpg_execute_server_program
, da det tillader læsning eller skrivning af enhver fil eller kører et program, som serveren har privilegier til at få adgang til.
(pg_read_server_files
, pg_write_server_files
og pg_execute_server_program
er nye i Postgres 11.)
4. Eller læs en fil lokalt for klienten med psql-metakommandoen \copy
. Se:
- Hvordan opdaterer du valgte rækker med værdier fra en CSV-fil i Postgres?
- Sådan bruges \copy i postgresql med pgadmin4