Vous n'êtes pas identifié(e).
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
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';
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.
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
);
YES.... je suis stupide, j'avais fais la même l'autre jour... je me mélange trop les pinceaux...
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.
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 ?
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
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
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
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
je vais regarder
c'est le compte postgres par defaut
\copy (SELECT * FROM maTable) TO './export.sql' DELIMITER ',' CSV;
Permission non accordée
bonjour,
depuis la session ssh
dans ce cas, comment puis-je copier les données d'une table via ssh sur mon poste local ?
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
bon merci quand même ; )
bonne fin de journée
quand j'enregistre mon fichier avec blocnote l'encodage est bien UTF-8
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
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';
je viens de le faire et toujours pas...
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... ; )
je vois qu'il faut éditer le fichier C:\Program Files\PostgreSQL\10\scripts\runpsql.bat en ajoutant la ligne chcp 1252
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
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 ?
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)