Dans PostgreSQL, Comment insérer des données avec la commande COPIER?

j'ai un problème quand exécuter 1 Project NodeJs avec la base de données PostgreSQL. J'ai une erreur en essayant d'insérer des données dans pgAdmin en utilisant le COPY la commande.

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

Bons Voeux  blonde  9.5 Brasserie Dupont    250 130 generic.png

cette donnée en gist:

Cette erreur:

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

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

13
demandé sur Erwin Brandstetter 2015-08-28 15:43:35

2 réponses

COPY tbl FROM STDIN;

n'est pas supporté par pgAdmin.

Vous obtenez une erreur de syntaxe simple parce que Postgres obtient les données en code SQL.

Trois solutions possibles:

1. utilisez une rangée multiple INSERT au lieu de:

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

notez la syntaxe différente (SQL) pour les valeurs en chaîne ou littérales numériques.

Vous pouvez générer les données avec pg_dump en utilisant --inserts. Connexes:

2. ou appelez votre script sur la ligne de commande en utilisant psql. Comme le système de l'utilisateur postgres:

psql beer -f beer.sql

assurez-vous qu'il y a un marqueur de fin de données (\.) pour défaut text format. (Vous avez que.) la documentation:

la fin des données peut être représentée par une seule ligne contenant seulement barre oblique inverse de la période (\.). Une fin de marqueur de données n'est pas nécessaire lorsque lecture à partir d'un fichier, depuis la fin de fichier sert parfaitement bien; il n'est nécessaire que lorsque vous copiez des données à destination ou en provenance d'applications client en utilisant protocole client pré-3.0.

3. ou déplacez vos données dans un fichier séparé (local pour le serveur!), dire " beer_data.csv " et utiliser COPY .. FROM 'filename' dans votre script:

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

quel fonctionne dans les deux sens.

18
répondu Erwin Brandstetter 2017-05-23 11:46:34

Première étape:

créer la base de données belgianbeers sur pgAdmin.

Deuxième étape: Ouvrez l'invite et lancez cette ligne de commande:

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

cette ligne de commande exécute les tables de mise à jour de la base de données.

-U = nom d'utilisateur postgres

3
répondu CGLSOFT 2016-12-24 20:17:59