COPY tbl FROM STDIN;
n'est pas pris en charge par pgAdmin.
Vous obtenez une simple erreur de syntaxe car Postgres récupère les données sous forme de code SQL.
Quatre solutions possibles :
1. Utiliser un INSERT
multi-lignes à la place :
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 (SQL) différente pour les valeurs sous forme de chaînes ou de littéraux numériques.
Vous pouvez générer les données avec pg_dump
en utilisant --inserts
. Connexe :
- Exporter des lignes spécifiques d'une table PostgreSQL en tant que script INSERT SQL
2. Ou appelez votre script sur la ligne de commande en utilisant psql
. En tant qu'utilisateur système postgres
:
psql -f beer.sql -U my_login_role -d db_name
Base de données (-d
) et le rôle de connexion (-U
pour "Utilisateur") peut être omis si les valeurs par défaut sont correctes. Exemples de syntaxe :
- Créer une base de données Postgres à l'aide d'un fichier batch avec [template],[encoding],[owner] et un fichier .sql
Assurez-vous qu'il y a un marqueur de fin de données (\.
) pour le text
par défaut format. (Vous l'avez.) Le manuel :
La fin des données peut être représentée par une seule ligne contenant juste une barre oblique inverse (
\.
). Un marqueur de fin de données n'est pas nécessaire lors de la lecture d'un fichier, puisque la fin de fichier sert parfaitement; il n'est nécessaire que lors de la copie de données vers ou depuis des applications clientes à l'aide d'un protocole client antérieur à la version 3.0.
3. Ou déplacez vos données vers un fichier séparé sur le serveur , dites 'beer_data.csv' et utilisez COPY .. FROM 'filename'
dans votre script :
COPY beer (name, tags, alcohol, brewery, id, brewery_id, image)
FROM '/path/to/beer_data.csv';
Ce qui fonctionne dans les deux sens. Cependant, vous avez besoin des privilèges de superutilisateur. Le manuel :
[...]
COPY
nommer un fichier ou une commande n'est autorisé qu'aux superutilisateurs de la base de données ou aux utilisateurs qui se voient attribuer l'un des rôles par défautpg_read_server_files
,pg_write_server_files
, oupg_execute_server_program
, car il permet de lire ou d'écrire n'importe quel fichier ou d'exécuter un programme auquel le serveur a des privilèges d'accès.
(pg_read_server_files
, pg_write_server_files
et pg_execute_server_program
sont nouveaux dans Postgres 11.)
4. Ou lire un fichier local au client avec la méta-commande psql \copy
. Voir :
- Comment mettre à jour les lignes sélectionnées avec les valeurs d'un fichier CSV dans Postgres ?
- Comment utiliser \copy dans postgresql avec pgadmin4