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