COPY tbl FROM STDIN;
wird von pgAdmin nicht unterstützt.
Sie erhalten einen einfachen Syntaxfehler, da Postgres die Daten als SQL-Code erhält.
Vier mögliche Lösungen:
1. Verwenden Sie ein mehrzeiliges INSERT stattdessen:
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')
;
Beachten Sie die unterschiedliche (SQL-)Syntax für Werte als Zeichenfolge oder numerische Literale.
Sie können die Daten mit pg_dump generieren mit --inserts . Verwandte:
- Exportieren Sie bestimmte Zeilen aus einer PostgreSQL-Tabelle als INSERT-SQL-Skript
2. Oder rufen Sie Ihr Skript auf der Kommandozeile mit psql auf . Als Systembenutzer postgres :
psql -f beer.sql -U my_login_role -d db_name
Datenbank (-d ) und Anmelderolle (-U für "Benutzer") kann weggelassen werden, wenn die Voreinstellungen ok sind. Syntaxbeispiele:
- Erstellen Sie eine Postgres-Datenbank mithilfe einer Stapeldatei mit [Vorlage], [Codierung], [Eigentümer] und einer .sql-Datei
Stellen Sie sicher, dass eine Datenende-Markierung vorhanden ist (\. ) für standardmäßigen text Format. (Das hast du.) Das Handbuch:
Das Datenende kann durch eine einzelne Zeile dargestellt werden, die nur einen Backslash-Punkt enthält (\. ). Eine Datenende-Markierung ist beim Lesen aus einer Datei nicht erforderlich, da das Dateiende perfekt funktioniert; Es wird nur benötigt, wenn Daten mit einem Client-Protokoll vor Version 3.0 zu oder von Client-Anwendungen kopiert werden.
3. Oder verschieben Sie Ihre Daten in eine separate Datei auf dem Server , sagen Sie 'beer_data.csv' und verwenden Sie COPY .. FROM 'filename' in Ihrem Skript:
COPY beer (name, tags, alcohol, brewery, id, brewery_id, image)
FROM '/path/to/beer_data.csv';
Was so oder so funktioniert. Sie benötigen jedoch Superuser-Rechte. Das Handbuch:
[...] COPY Das Benennen einer Datei oder eines Befehls ist nur Datenbank-Superusers oder Benutzern erlaubt, denen eine der Standardrollen pg_read_server_files gewährt wird , pg_write_server_files , oderpg_execute_server_program , da es erlaubt, jede Datei zu lesen oder zu schreiben oder ein Programm auszuführen, auf das der Server Zugriffsrechte hat.
(pg_read_server_files , pg_write_server_files und pg_execute_server_program sind neu in Postgres 11.)
4. Oder lesen Sie eine lokale Datei auf dem Client mit dem psql-Metabefehl \copy . Siehe:
- Wie aktualisiere ich ausgewählte Zeilen mit Werten aus einer CSV-Datei in Postgres?
- Verwendung von \copy in postgresql mit pgadmin4