PostgreSQL La base de donnees la plus sophistiquee au monde.

Forums PostgreSQL.fr

Le forum officiel de la communauté francophone de PostgreSQL

Vous n'êtes pas identifié(e).

#1 PSQL » Comment lancer un script avec un argument ? » 14/01/2021 18:30:22

LECARROU
Réponses : 2

Bonjour,

j'ai un script (script.txt) qui doit comparer 2 tables à l'aide d'une fonction (pharmacy_control(table1,table2)) que je lance dans psql \i 'chemin/vers/script.txt'

j'aimerais passer le nom du fichier utilisé dans le script en paramètre de la commande du genre \i 'chemin/vers/nom_du_script' file='nom_du_fichier'
mais çà ne fonctionne pas : 'invalid argument'


script.txt

DROP TABLE IF EXISTS adm_med_check;
CREATE TABLE IF NOT EXISTS adm_med_check
(med_ide SERIAL, med_num varchar(3), med_pay varchar(3));

\copy adm_med_check(med_num,med_pay) FROM 'D:/Users/jl3/2_ETUDES/18_INTENSETBM/:file WITH CSV HEADER DELIMITER ',' QUOTE '"' NULL AS '';

SELECT * FROM pharmacy_control('adm_med','adm_med_check');

d'avance merci pour votre aide

#2 Re : pgAdmin4 » Impossible de restaurer ma base de données (pg_restore failed) » 05/01/2021 11:46:50

j'ouvre SQL Shell (psql) et me connecte à la base de données db_dev_backup avec l'utilisateur postgres

\i 'D:\\path\to\my\file\db_backup.psql';

#3 Re : pgAdmin4 » Impossible de restaurer ma base de données (pg_restore failed) » 05/01/2021 11:17:52

oui, localement

j'ai testé en faisant une sauvegarde et en restaurant ma base db_dev dans db_dev_backup depuis pgAdmin et çà fonctionne

j'ai l'impression que c'est le fichier créé via mon appli qui n'est pas conforme...

C:\Program Files\PostgreSQL\10\bin\pg_restore.exe --host "localhost" --port "5433" --username "postgres" --no-password --dbname "db_dev_backup" --verbose "D:\\path\to\db_backup.psql"

j'ouvre donc une invite au niveau C:\Program Files\PostgreSQL\10\bin et je tape la commande :
pg_restore --host "localhost" --port "5433" --username "postgres" --no-password --dbname "db_dev_backup" --verbose "D:\\path\to\db_backup.psql"

j'obtiens le message pg_restore: [archiveur] Le fichier en entrée semble être une sauvegarde au format texte. Merci d'utiliser psql.

#4 pgAdmin4 » Impossible de restaurer ma base de données (pg_restore failed) » 05/01/2021 10:55:26

LECARROU
Réponses : 4

Bonjour,

j'utilise une base de données PostgreSQL 10 avec mon application Django.
J'ai mis en place une sauvegarde automatique à l'aide de l'application tierce Django dbbackup qui génère un fichier .psql ci-dessous (en utilisant pg_dump en principe)

J'essaie donc de restaurer ma base depuis pgAdmin 4 mais la restauration échoue sans que j'ai plus d'info sur la raison.

J'ai créé un base de données db_backup et depuis pgAdmin 4, je sélectionne ma base et l'option restore
Je sélectionne mon fichier backup.psql

J'ai simplement une fenêtre qui s'affiche indiquant:
Restoring backup on server 'Postgres Enterprise Managager (localhost:5433)'...
Running command:
C:\path\to\pg_restore.exe --host "localhost" --port "5433" --username "postgres" --no-password --dbname "db_backup" --verbose "D:\\path\to\my\files\backup.psql"

Failed (exit code: 1)

Ma base est bien sur le port 5433

--
-- PostgreSQL database dump
--

-- Dumped from database version 10.10
-- Dumped by pg_dump version 12.5

SET statement_timeout = 0;
SET lock_timeout = 0;
SET idle_in_transaction_session_timeout = 0;
SET client_encoding = 'UTF8';
SET standard_conforming_strings = on;
SELECT pg_catalog.set_config('search_path', '', false);
SET check_function_bodies = false;
SET xmloption = content;
SET client_min_messages = warning;
SET row_security = off;

ALTER TABLE ONLY public.parameters_historicalthesaurusoption DROP CONSTRAINT parameters_historica_history_user_id_f34984e9_fk_auth_user;

...

--
-- Name: Comments; Type: TABLE; Schema: public; Owner: user_dev
--

CREATE TABLE public."Comments" (
    deleted timestamp with time zone,
    comment_id integer NOT NULL,
    title character varying(50),
    comment character varying(250),
    rate integer,
    "like" integer,
    dislike integer,
    created_at timestamp with time zone NOT NULL
);

#5 Re : Général » \copy : erreur "Aucun fichier ou dossier de ce type" » 17/07/2020 15:20:28

YES.... je suis stupide, j'avais fais la même l'autre jour... je me mélange trop les pinceaux...

#6 Re : Général » \copy : erreur "Aucun fichier ou dossier de ce type" » 17/07/2020 14:38:21

ah bon ?
d'après le site https://linuxize.com/post/how-to-use-sc … fer-files/
je devrais pouvoir faire

scp zebra@192.168.80.9:/var/lib/postgresql/crf_ran_export_20200717.txt C:\Users\jl3.PRT-063\Desktop

mais j'obtiens l'erreur :

ssh: Could not resolve hostname c: Temporary failure in name resolution
lost connection

si je fait scp zebra@192.168.80.9:/home/zebra/scripts/crf_ran_export_20200717.txt C:/Users/jl3.PRT-063/Desktop (slash '/' à la place d'antislash '\' dans le chemin) j'obtiens une erreur concernant les droits d'accès :

Permission denied, please try again.

#7 Re : Général » \copy : erreur "Aucun fichier ou dossier de ce type" » 17/07/2020 14:15:30

merci çà a marché mais je suis un peu perdu

j'ai le fichier dans /var/lib/postgresql/
comment je le transfert sur mon ordi en local ?

#8 Re : Général » \copy : erreur "Aucun fichier ou dossier de ce type" » 17/07/2020 11:31:01

je reviens déterrer ce post car je n'ai toujours pas réussi


j'ai une base de données mabase et un utilisateur monutilisateur que j'ai "granté" sur cette base

je vais reprendre ce que je fais :

1. je me connecte via Putty au serveur distant
2. je lance psql : sudo -u postgres psql (j'ai essayé de me connecter avec monutilisateur mais j'obtiens le message d'erreur suivant : sudo : utilisateur inconnu : monutilisateur et sudo : impossible d'intialiser le greffon de règles)
3. je me connecte à ma base : \c mabase
4. je lance la commande \copy matable TO '/home/path/to/my/file/file.txt' et j'obtiens le message d'erreur suivant :  '/home/path/to/my/file/file.txt' : Permission non accordée

d'avance merci pour votre aide

#9 Re : Général » cp: impossible d'évaluer '/Users/jl3.PRT-063/Desktop/test.txt': Aucun » 02/07/2020 12:11:35

non sur Windows
en fait j'ai résolu mon problème en lancer une invite de commande depuis le dossier contenant le fichier à transférer et en lançant la commande
scp test.txt zebra@192.168.80.9:/home/zebra/scripts/

en fait j'essayais de lancer ma commande depuis le serveur (après m'être connecté via PuTTy)
je me mélange les 'pinceaux' car je ne maitrise pas les aspects admin sys élémentaires

#10 Re : Général » cp: impossible d'évaluer '/Users/jl3.PRT-063/Desktop/test.txt': Aucun » 02/07/2020 11:50:42

ma commande: scp /Users/jl3.PRT-063/Desktop/test.txt /home/zebra/scripts/

et l'erreur levée: cp: impossible d'évaluer '/Users/jl3.PRT-063/Desktop/test.txt': Aucun

le lien: j'écris un script pour initialiser une bdd postgresql à distance et je veux donc le déposer sur le serveur

#11 Général » cp: impossible d'évaluer '/Users/jl3.PRT-063/Desktop/test.txt': Aucun » 02/07/2020 09:58:47

LECARROU
Réponses : 4

Bonjour,

je galère toujours autant en bash

je souhaite créer un script que je pourrait lancé à distance en me connectant en ssh à un serveur distant

et première chose que je souhaite faire c'est simplement de copier le script de ma macine en local vers un dossier sur le serveur distant et déjà je bloque
cp: impossible d'évaluer '/Users/jl3.PRT-063/Desktop/test.txt': Aucun

j'ai pourtant vérifié les chemins d'origine et de destinations et ils sont bons

d'où provient mon erreur ?
d'avance merci pour votre aide

#13 Re : Général » \copy : erreur "Aucun fichier ou dossier de ce type" » 25/03/2020 10:46:05

\copy (SELECT * FROM maTable) TO './export.sql' DELIMITER ',' CSV;

Permission non accordée

#14 Re : Général » \copy : erreur "Aucun fichier ou dossier de ce type" » 25/03/2020 10:35:16

bonjour,
depuis la session ssh
dans ce cas, comment puis-je copier les données d'une table via ssh sur mon poste local ?

#15 Général » \copy : erreur "Aucun fichier ou dossier de ce type" » 25/03/2020 10:17:26

LECARROU
Réponses : 17

Bonjour,

Je travaille sous windows et me connecte à ma base postgresql via ssh
Je souhaite copier une table dans un fichier csv sur mon poste local

j'utilise donc la commande ci-dessous prévue (\copy permet cela si j'ai bien compris la doc : remote to local):
\copy (SELECT * FROM maTable) TO 'D:/Users/chemin/export.sql' DELIMITER ',' CSV;

mais j'obtiens une erreur sur mon chemin alors même que celui-ci est bon : "Aucun fichier ou dossier de ce type"


d'avance merci pour votre aide

#17 Re : Général » Administration base Postgresql via SSH » 17/03/2020 18:34:24

quand j'enregistre mon fichier avec blocnote l'encodage est bien UTF-8

#18 Re : Général » Administration base Postgresql via SSH » 17/03/2020 18:30:24

WIN1252
 client_encoding
-----------------
 WIN1252
(1 ligne)


                                           Liste des bases de données
    Nom     | Propriétaire | Encodage |  Collationnement   |    Type caract.    |        Droits d'accès
------------+--------------+----------+--------------------+--------------------+-------------------------------
 intensetbm | postgres     | UTF8     | French_France.1252 | French_France.1252 | =Tc/postgres                 +
            |              |          |                    |                    | postgres=CTc/postgres        +
            |              |          |                    |                    | intensetbm_admin=CTc/postgres
(1 ligne)


INSERT 0 1
 deleted | pay_ide | pay_nom_eng | pay_abr |  pay_nom_fra
---------+---------+-------------+---------+----------------
         |       2 | Ivory Coast | CIV     | Côte d Ivoire
         |       8 | Ivory Coast | CIV     | Côte d Ivoire
         |       9 | Ivory Coast | CIV     | Côte d Ivoire
(3 lignes)

il ne faut considérer que la dernière ligne de la tabel

#19 Re : Général » Administration base Postgresql via SSH » 17/03/2020 18:21:08

euh, pas sûr d'avoir compris ! ; )

je me suis connecté via SQL Shell et j'obtiens le message suivant :

Server [localhost]:
Database [postgres]:
Port [5433]:
Username [postgres]: postgres
Page de codes active : 1252
Mot de passe pour l'utilisateur postgres :
psql (10.10)
Saisissez « help » pour l'aide.

postgres=#

à partir de là, je lance donc le script que vous m'avez donné (aucun SET de l'encoding):

\encoding
show client_encoding
\l intensetbm
INSERT INTO adm_pay (pay_nom_eng,pay_nom_fra,pay_abr) VALUES ('Ivory Coast','Côte d Ivoire','CIV');
select * from adm_pay where pay_abr='CIV';

et j'obtiens la sortie suivante :

WIN1252
                                           Liste des bases de données
    Nom     | Propriétaire | Encodage |  Collationnement   |    Type caract.    |        Droits d'accès
------------+--------------+----------+--------------------+--------------------+-------------------------------
 intensetbm | postgres     | UTF8     | French_France.1252 | French_France.1252 | =Tc/postgres                 +
            |              |          |                    |                    | postgres=CTc/postgres        +
            |              |          |                    |                    | intensetbm_admin=CTc/postgres
(1 ligne)

les instructions SQL sortent en erreur

psql:D:/Users/jl3/intensetbm_test/intensetbm-etool/test.txt:4: ERREUR:  erreur de syntaxe sur ou près de « INSERT »
LIGNE 2 : INSERT INTO adm_pay (pay_nom_eng,pay_nom_fra,pay_abr) VALUES...
          ^
psql:D:/Users/jl3/intensetbm_test/intensetbm-etool/test.txt:5: ERREUR:  la relation « adm_pay » n'existe pas
LIGNE 1 : select * from adm_pay where pay_abr='CIV';

#21 Re : Général » Administration base Postgresql via SSH » 17/03/2020 17:20:22

j'ai modifier runpsql.bat et je n'ai plus l'avertissement au lancement de psql (cool)

si je fait

INSERT INTO adm_pay (pay_nom_eng,pay_nom_fra,pay_abr) VALUES ('Ivory Coast','Côte d Ivoire','CIV');

directement dans la console pslq pas de problème, il m'insère correctement les accents

mais si je lance le script depuis la console : \i 'D:/Users/jl3/intensetbm_test/intensetbm-etool/script2.txt' toujours un problème sur les accents...

script1.txt

CREATE DATABASE intensetbm;
CREATE USER intensetbm_admin WITH PASSWORD 'admin';
ALTER ROLE intensetbm_admin SET client_encoding TO 'utf8';
ALTER ROLE intensetbm_admin SET default_transaction_isolation TO 'read committed';
ALTER ROLE intensetbm_admin SET timezone TO 'UTC';
GRANT ALL PRIVILEGES ON DATABASE intensetbm TO intensetbm_admin;

script2.txt

SET client_encoding TO 'utf8';
INSERT INTO adm_pay (pay_nom_eng,pay_nom_fra,pay_abr) VALUES ('Ivory Coast','Côte d Ivoire','CIV');

je vais craquer... ; )

#22 Re : Général » Administration base Postgresql via SSH » 17/03/2020 16:48:39

je vois qu'il faut éditer le fichier C:\Program Files\PostgreSQL\10\scripts\runpsql.bat en ajoutant la ligne chcp 1252

#23 Re : Général » Administration base Postgresql via SSH » 17/03/2020 16:38:47

mais le problème c'est que je ne lance pas psql avec la commande psql... j'ouvre la console SQL Shell, renseigne les paramètre de connexion serveur et psql se lance automatiquement... donc à aucun moment je ne peut faire chcp 1252 avant psql

#24 Re : Général » Administration base Postgresql via SSH » 17/03/2020 16:31:19

pardon mais qu'entendez-vous par exécuter chcp AVANT de lancer psql ?
je début en postgres et ce que je fait c'est que je recherche l'application SQL Shell (psql) et le lance pour utiliser psql

du coup, ou est-ce que je dois lancer chcp?

dans mes scripts, c'est SET client_encoding to 'UTF8' ou 'win1252' du coup ?

#25 Re : Général » Administration base Postgresql via SSH » 17/03/2020 16:12:47

chcp ne me retourne rien
par contre j'ai effectivement un message d'avertissement au lancement de la console psql

Attention : l'encodage console (850) diffère de l'encodage Windows (1252).
            Les caractères 8 bits peuvent ne pas fonctionner correctement.
            Voir la section « Notes aux utilisateurs de Windows » de la page
            référence de psql pour les détails.
Saisissez « help » pour l'aide.
postgres=# \l intensetbm;
                                           Liste des bases de donnÚes
    Nom     | PropriÚtaire | Encodage |  Collationnement   |    Type caract.    |        Droits d'accÞs
------------+--------------+----------+--------------------+--------------------+-------------------------------
 intensetbm | postgres     | UTF8     | French_France.1252 | French_France.1252 | =Tc/postgres                 +
            |              |          |                    |                    | postgres=CTc/postgres        +
            |              |          |                    |                    | intensetbm_admin=CTc/postgres
(1 ligne)

Pied de page des forums

Propulsé par FluxBB