it-swarm.com.de

Wie füge ich in PostgreSQL Daten mit dem Befehl COPY ein?

Ich habe ein Problem beim Ausführen von 1 Projekt-NodeJs mit der PostgreSQL-Datenbank. Beim Versuch, Daten mit dem Befehl COPY in pgAdmin einzufügen, ist ein Fehler aufgetreten.

COPY beer (name, tags, alcohol, brewery, id, brewery_id, image) FROM stdin;

Bons Voeux  blonde  9.5 Brasserie Dupont    250 130 generic.png

Diese Daten in Gist :

Dieser Fehler:

ERROR: syntax error at or near "Bons"
SQL state: 42601
Character: 1967

I was create database like this and execute file .sql:

20
user4646310
COPY tbl FROM STDIN;

wird von pgAdmin nicht unterstützt.
Sie erhalten einen einfachen Syntaxfehler, da Postgres die Daten als SQL-Code abruft.

Vier mögliche Lösungen:

1. Verwenden Sie stattdessen ein mehrzeiliges INSERT:

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 mit --inserts . Verbunden:

2. Oder rufen Sie Ihr Skript in der Befehlszeile mit psql auf. Als Systembenutzer postgres:

psql -f beer.sql -U my_login_role -d db_name 

Datenbank (-d) und Login-Rolle (-U für "Benutzer") kann weggelassen werden, wenn die Standardeinstellungen in Ordnung sind. Syntaxbeispiele:

Stellen Sie sicher, dass ein Datenende-Marker (\.) für das Standardformat text. (Sie haben das.) Das Handbuch:

Das Datenende kann durch eine einzelne Zeile dargestellt werden, die nur einen umgekehrten Schrägstrich enthält (\.). Ein Datenende-Marker ist beim Lesen aus einer Datei nicht erforderlich, da das Dateiende einwandfrei 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, sag 'beer_data.csv' und benutze COPY .. FROM 'filename' in Ihrem Skript:

COPY beer (name, tags, alcohol, brewery, id, brewery_id, image)
FROM '/path/to/beer_data.csv';

Welches funktioniert so oder so. Sie benötigen jedoch Superuser-Berechtigungen. Das Handbuch:

[...] COPY Das Benennen einer Datei oder eines Befehls ist nur Datenbank-Superusern oder Benutzern gestattet, denen eine der Standardrollen pg_read_server_files, pg_write_server_files, oder pg_execute_server_program, da es das Lesen oder Schreiben von Dateien oder das Ausführen eines Programms ermöglicht, auf das der Server zugreifen darf.

(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 . Sehen:

29

Erster Schritt:

datenbank belgianbeers auf pgAdmin erstellen.

Zweiter Schritt: Öffnen Sie die Eingabeaufforderung und führen Sie die folgende Befehlszeile aus:

psql -U postgres -d belgische biere -a -f beers.sql

Diese Befehlszeile führt e Update-Datenbanktabellen aus.

-U = Benutzername postgres

4
Claudio