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