2015-08-28 6 views
8

Ich habe ein Problem, wenn ich 1 Projekt NodeJs mit PostgreSQL-Datenbank ausführen. Ich habe einen Fehler beim Versuch, Daten in pgAdmin mit dem Befehl COPY einzufügen.In PostgreSQL, wie Sie Daten mit COPY-Befehl einfügen?

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 können 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:

+0

Diese Art von Fehler hängt vom Typ des Datenbankframeworks ab, das Sie verwenden. Sie sollten solche Details in Ihre Frage aufnehmen. –

+0

@ vitaly-t, ich war Update gif Datei Methode erstellen Sie 1 Datenbank und führen Sie die Datei biers.sql aber Fehler haben. –

+0

Bitte helfen Sie mir. –

Antwort

12
COPY tbl FROM STDIN;

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

Drei mögliche Lösungen:

1. Verwenden einer mehrreihigen INSERT statt:

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') 
; 

Notiere die verschiedenen (SQL) Syntax für die Werte als Zeichenfolge oder einen numerischen Literale.

Sie können die Daten mit pg_dump using --inserts generieren. Verwandte:

2. Oder rufen Sie das Skript auf der Kommandozeile mit psql. Als Systembenutzer postgres:

psql beer -f beer.sql 

Seien Sie sicher, dass eine End-of-Datenmarkierung ist (\.) für Standard text Format. (Sie haben das.) The documentation:

End of data can be represented by a single line containing just backslash-period (\.). An end-of-data marker is not necessary when reading from a file, since the end of file serves perfectly well; it is needed only when copying data to or from client applications using pre-3.0 client protocol.

3. Oder Ihre Daten in eine separate Datei verschieben (lokal auf dem Server!), sagen 'beer_data.csv' und verwenden COPY .. FROM 'filename' in Ihrem Skript :

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

, die entweder so funktioniert.

+2

'pg_dump --inserts > dump.sql' hat es für mich getan, danke! –

1

Erster Schritt:

Datenbank belgianbeers auf pgAdmin erstellen.

Zweiter Schritt: Öffnen prompt und Ausführen dieser Befehlszeile:

psql -U postgres -d belgianbeers -a -f Biere.sql

Diese Befehlszeile mit e aktualisieren Datenbanktabellen.

-U = Benutzername postgres

Verwandte Themen