Pages: 1
- Sujet précédent - Sauvegarde et restauration d'une base de donnée [Postgres/gis] - Sujet suivant
#1 Tue 27 January 2015 16:47
- PaulH
- Participant assidu
- Lieu: Nantes
- Date d'inscription: 1 Aug 2007
- Messages: 463
Sauvegarde et restauration d'une base de donnée [Postgres/gis]
Bonjour à tous,
J'ai 2 base de données. Je souhaiterais transférer le schéma « public » de la première BD vers un nouveau schéma « oql » à l'intérieur de la seconde BD.
Je sais qu'il faut que je fasse ma sauvegarde en .sql afin que je puisse faire la restauration depuis l'éditeur sql dans PGAdmin. Je pourrais ainsi changer le nom du schéma et insérer seulement les données dans le nouveau schéma.
Le problème est que je ne vois pas du tout comment faire cette opération...
Est ce que quelqu'un a déjà eu à faire cette opération?
Je vous remercie d'avance pour votre aide!
Paul Hedin
ex-luern
Hors ligne
#2 Wed 28 January 2015 11:09
Re: Sauvegarde et restauration d'une base de donnée [Postgres/gis]
Bonjour,
Avec pgAdmin, clic droit sur le schéma puis Sauvegarder.
Nom de fichier: test.sql
Format: Fichier plat
Codage et Rôle selon vos besoins
Dans Options 2 cocher:
Utiliser les colonnes pour les INSERT
Utiliser des commandes pour les INSERT
Cela produit le fichier sql que vous pouvez modifier
Jean-Marie
Azimut
Hors ligne
#3 Wed 28 January 2015 11:54
- PaulH
- Participant assidu
- Lieu: Nantes
- Date d'inscription: 1 Aug 2007
- Messages: 463
Re: Sauvegarde et restauration d'une base de donnée [Postgres/gis]
Merci pour cette première réponse.
J'obtiens un fichier txt assez imbuvable...je dois chercher/remplacer tous les "public" et mettre le nom de mon schéma de destination? Faire la mm chose pour la base de donnée?
Ensuite, je suppose devoir créer mon schéma de destination, clic droit sur le schéma puis restauration.
Nom du fichier: test.sql (modifié)
Nom du rôle: postgres
Options 1 & Options 2: en jouant sur les options, il m'est impossible de cliquer sur Restauration
Paul Hedin
ex-luern
Hors ligne
#4 Wed 28 January 2015 14:42
Re: Sauvegarde et restauration d'une base de donnée [Postgres/gis]
Merci pour cette première réponse.
J'obtiens un fichier txt assez imbuvable...je dois chercher/remplacer tous les "public" et mettre le nom de mon schéma de destination? Faire la mm chose pour la base de donnée?
Si le SQL est imbuvable, ça va être difficile d'aller plus loin ...
En effet, il faut remplacer public par le nom du nouveau schéma mais il est nécessaire de connaitre un minimum la syntaxe SQL pour faire ce genre de manipulation efficacement.
Merci pour cette première réponse.
Ensuite, je suppose devoir créer mon schéma de destination, clic droit sur le schéma puis restauration.
Nom du fichier: test.sql (modifié)
Nom du rôle: postgres
Options 1 & Options 2: en jouant sur les options, il m'est impossible de cliquer sur Restauration
Restauration ne permet de traiter qu'un fichier au format pgdump. En choisissant le format Fichier à plat c'est un script SQL qui est généré. Il faut donc ensuite l'exécuter dans la fenêtre SQL
Jean-Marie
Azimut
Hors ligne
#5 Wed 28 January 2015 15:13
- PaulH
- Participant assidu
- Lieu: Nantes
- Date d'inscription: 1 Aug 2007
- Messages: 463
Re: Sauvegarde et restauration d'une base de donnée [Postgres/gis]
Au niveau du fichier .sql, le remplacement du nom de schéma à l'air de fonctionner (public par oql), simplement quand j'essaye de lancer le script j'ai une erreur de type:
ERREUR: le type « geometry » n'existe pas
LINE 252: geom geometry(MultiPolygon,2154),
^
********** Erreur **********
ERREUR: le type « geometry » n'existe pas
État SQL :42704
Caractère : 5854
Je vous donne les 253 premières lignes du code.
Code:
-- -- PostgreSQL database dump -- -- Dumped from database version 9.2.4 -- Dumped by pg_dump version 9.2.4 -- Started on 2015-01-28 11:33:41 SET statement_timeout = 0; SET client_encoding = 'UTF8'; SET standard_conforming_strings = on; SET check_function_bodies = false; SET client_min_messages = warning; SET search_path = oql, pg_catalog; SET default_tablespace = ''; SET default_with_oids = false; -- -- TOC entry 188 (class 1259 OID 23812) -- Name: activite_club_sport; Type: TABLE; Schema: oql; Owner: postgres; Tablespace: -- CREATE TABLE activite_club_sport ( acsport_annee integer NOT NULL, acsport_act_sport_id integer NOT NULL, acsport_cspo_id integer NOT NULL ); ALTER TABLE oql.activite_club_sport OWNER TO postgres; -- -- TOC entry 189 (class 1259 OID 23815) -- Name: activite_mer; Type: TABLE; Schema: oql; Owner: postgres; Tablespace: -- CREATE TABLE activite_mer ( act_annee integer NOT NULL, act_bouee boolean, act_drapeau boolean, act_act_mert_id integer NOT NULL, act_plg_id integer NOT NULL ); ALTER TABLE oql.activite_mer OWNER TO postgres; -- -- TOC entry 190 (class 1259 OID 23818) -- Name: activite_mer_type; Type: TABLE; Schema: oql; Owner: postgres; Tablespace: -- CREATE TABLE activite_mer_type ( act_mert_id integer NOT NULL, act_mert_label character varying ); ALTER TABLE oql.activite_mer_type OWNER TO postgres; -- -- TOC entry 191 (class 1259 OID 23824) -- Name: activite_mer_type_act_mert_id_seq; Type: SEQUENCE; Schema: oql; Owner: postgres -- CREATE SEQUENCE activite_mer_type_act_mert_id_seq START WITH 1 INCREMENT BY 1 NO MINVALUE NO MAXVALUE CACHE 1; ALTER TABLE oql.activite_mer_type_act_mert_id_seq OWNER TO postgres; -- -- TOC entry 4036 (class 0 OID 0) -- Dependencies: 191 -- Name: activite_mer_type_act_mert_id_seq; Type: SEQUENCE OWNED BY; Schema: oql; Owner: postgres -- ALTER SEQUENCE activite_mer_type_act_mert_id_seq OWNED BY activite_mer_type.act_mert_id; -- -- TOC entry 192 (class 1259 OID 23826) -- Name: activite_sportive; Type: TABLE; Schema: oql; Owner: postgres; Tablespace: -- CREATE TABLE activite_sportive ( act_sport_id integer NOT NULL, act_sport_label character varying ); ALTER TABLE oql.activite_sportive OWNER TO postgres; -- -- TOC entry 193 (class 1259 OID 23832) -- Name: activite_sportive_act_sport_id_seq; Type: SEQUENCE; Schema: oql; Owner: postgres -- CREATE SEQUENCE activite_sportive_act_sport_id_seq START WITH 1 INCREMENT BY 1 NO MINVALUE NO MAXVALUE CACHE 1; ALTER TABLE oql.activite_sportive_act_sport_id_seq OWNER TO postgres; -- -- TOC entry 4037 (class 0 OID 0) -- Dependencies: 193 -- Name: activite_sportive_act_sport_id_seq; Type: SEQUENCE OWNED BY; Schema: oql; Owner: postgres -- ALTER SEQUENCE activite_sportive_act_sport_id_seq OWNED BY activite_sportive.act_sport_id; -- -- TOC entry 194 (class 1259 OID 23834) -- Name: appreciation; Type: TABLE; Schema: oql; Owner: postgres; Tablespace: -- CREATE TABLE appreciation ( apprec_id integer NOT NULL, apprec_annee integer, apprec_excellent_pourc real, apprec_bon_pourc real, apprec_moyen_pourc real, apprec_mauvais_pourc real, apprec_plg_id integer ); ALTER TABLE oql.appreciation OWNER TO postgres; -- -- TOC entry 195 (class 1259 OID 23837) -- Name: appreciation_apprec_id_seq; Type: SEQUENCE; Schema: oql; Owner: postgres -- CREATE SEQUENCE appreciation_apprec_id_seq START WITH 1 INCREMENT BY 1 NO MINVALUE NO MAXVALUE CACHE 1; ALTER TABLE oql.appreciation_apprec_id_seq OWNER TO postgres; -- -- TOC entry 4038 (class 0 OID 0) -- Dependencies: 195 -- Name: appreciation_apprec_id_seq; Type: SEQUENCE OWNED BY; Schema: oql; Owner: postgres -- ALTER SEQUENCE appreciation_apprec_id_seq OWNED BY appreciation.apprec_id; -- -- TOC entry 196 (class 1259 OID 23839) -- Name: ch_trav_caractq; Type: TABLE; Schema: oql; Owner: postgres; Tablespace: -- CREATE TABLE ch_trav_caractq ( chtravc_id integer NOT NULL, chtravc_annee integer, chtravc_delim boolean, chtravc_chtrtyp_id integer, chtravc_chtr_id integer ); ALTER TABLE oql.ch_trav_caractq OWNER TO postgres; -- -- TOC entry 197 (class 1259 OID 23842) -- Name: ch_trav_caractq_chtravc_id_seq; Type: SEQUENCE; Schema: oql; Owner: postgres -- CREATE SEQUENCE ch_trav_caractq_chtravc_id_seq START WITH 1 INCREMENT BY 1 NO MINVALUE NO MAXVALUE CACHE 1; ALTER TABLE oql.ch_trav_caractq_chtravc_id_seq OWNER TO postgres; -- -- TOC entry 4039 (class 0 OID 0) -- Dependencies: 197 -- Name: ch_trav_caractq_chtravc_id_seq; Type: SEQUENCE OWNED BY; Schema: oql; Owner: postgres -- ALTER SEQUENCE ch_trav_caractq_chtravc_id_seq OWNED BY ch_trav_caractq.chtravc_id; -- -- TOC entry 198 (class 1259 OID 23844) -- Name: ch_trav_type; Type: TABLE; Schema: oql; Owner: postgres; Tablespace: -- CREATE TABLE ch_trav_type ( chtrtyp_id integer NOT NULL, chtrtyp_label character varying ); ALTER TABLE oql.ch_trav_type OWNER TO postgres; -- -- TOC entry 199 (class 1259 OID 23850) -- Name: ch_trav_type_chtrtyp_id_seq; Type: SEQUENCE; Schema: oql; Owner: postgres -- CREATE SEQUENCE ch_trav_type_chtrtyp_id_seq START WITH 1 INCREMENT BY 1 NO MINVALUE NO MAXVALUE CACHE 1; ALTER TABLE oql.ch_trav_type_chtrtyp_id_seq OWNER TO postgres; -- -- TOC entry 4040 (class 0 OID 0) -- Dependencies: 199 -- Name: ch_trav_type_chtrtyp_id_seq; Type: SEQUENCE OWNED BY; Schema: oql; Owner: postgres -- ALTER SEQUENCE ch_trav_type_chtrtyp_id_seq OWNED BY ch_trav_type.chtrtyp_id; -- -- TOC entry 200 (class 1259 OID 23852) -- Name: chenal_traversier; Type: TABLE; Schema: oql; Owner: postgres; Tablespace: -- CREATE TABLE chenal_traversier ( chtr_id integer NOT NULL, table_bd character varying(200), geom geometry(MultiPolygon,2154), chtr_plgid integer ); ALTER TABLE oql.chenal_traversier OWNER TO postgres;
Qu'en pensez-vous?
Paul Hedin
ex-luern
Hors ligne
#6 Wed 28 January 2015 15:56
- VianneyD
- Participant assidu
- Date d'inscription: 30 May 2011
- Messages: 153
Re: Sauvegarde et restauration d'une base de donnée [Postgres/gis]
Bonjour,
On dirait que PostGIS n'est pas installé sur la nouvelle base de données, d'où l'erreur d'interprétation du type geometry....
Vianney Dugrain
Hors ligne
#7 Wed 28 January 2015 16:31
- PaulH
- Participant assidu
- Lieu: Nantes
- Date d'inscription: 1 Aug 2007
- Messages: 463
Re: Sauvegarde et restauration d'une base de donnée [Postgres/gis]
Pourtant ce n'est pas ça...il y a des couches géographiques que j'utilises au sein de cette base.
Paul Hedin
ex-luern
Hors ligne
#9 Wed 28 January 2015 17:01
- PaulH
- Participant assidu
- Lieu: Nantes
- Date d'inscription: 1 Aug 2007
- Messages: 463
Re: Sauvegarde et restauration d'une base de donnée [Postgres/gis]
Je viens de faire les mêmes manipulations sur notre serveur qui héberge notre solution web-sig, j'ai le même message. Pourtant que je doute que là il y ait des problèmes de postgis.
Paul Hedin
ex-luern
Hors ligne
#10 Wed 28 January 2015 17:07
Re: Sauvegarde et restauration d'une base de donnée [Postgres/gis]
Pourriez-vous attacher le script complet, svp (sans les données si confidentielles) ?
Dernière modification par jmarsac (Wed 28 January 2015 17:39)
Jean-Marie
Azimut
Hors ligne
#11 Wed 28 January 2015 19:00
- PaulH
- Participant assidu
- Lieu: Nantes
- Date d'inscription: 1 Aug 2007
- Messages: 463
Re: Sauvegarde et restauration d'une base de donnée [Postgres/gis]
En pj, vous trouverez le fichier issu de la sauvegarde directement (issu donc du schéma public à remplacer par oql)
Je vous remercie pour votre aide.
Paul Hedin
ex-luern
Hors ligne
#12 Wed 28 January 2015 22:11
Re: Sauvegarde et restauration d'une base de donnée [Postgres/gis]
Il faut modifier la ligne
Code:
SET search_path = oql, pg_catalog;
par
Code:
SET search_path = oql, public, pg_catalog;
en supposant que PostGis est dans les extensions du schéma public
Jean-Marie
Azimut
Hors ligne
#13 Thu 29 January 2015 10:07
- PaulH
- Participant assidu
- Lieu: Nantes
- Date d'inscription: 1 Aug 2007
- Messages: 463
Re: Sauvegarde et restauration d'une base de donnée [Postgres/gis]
Alors la ligne
SET search_path = oql, pg_catalog;
n'existe pas dans le fichier test.sql mais c'est plutôt celle-ci:
SET search_path = public, pg_catalog;
Je remplace cette dernière par:
SET search_path = oql, public, pg_catalog;
C'est bien ça?
Dernière modification par luern (Thu 29 January 2015 10:08)
Paul Hedin
ex-luern
Hors ligne
#15 Thu 29 January 2015 12:20
- PaulH
- Participant assidu
- Lieu: Nantes
- Date d'inscription: 1 Aug 2007
- Messages: 463
Re: Sauvegarde et restauration d'une base de donnée [Postgres/gis]
Ok. J'ai bien fait le remplacement et fait jouer le fichier dans le requêteur sql.
Autre message erreur (à mi script):
ERREUR: erreur de syntaxe sur ou près de « 2010 »
LINE 3115: 2010 1 19
^
********** Erreur **********
ERREUR: erreur de syntaxe sur ou près de « 2010 »
État SQL :42601
Caractère : 73521
Ci-dessous, l'extrait du code où se passe l'erreur:
--
-- TOC entry 3891 (class 0 OID 22671)
-- Dependencies: 188
-- Data for Name: activite_club_sport; Type: TABLE DATA; Schema: public; Owner: postgres
--
COPY activite_club_sport (acsport_annee, acsport_act_sport_id, acsport_cspo_id) FROM stdin;
2010 1 19
2010 1 13
2010 2 12
2010 2 11
2010 2 15
2010 2 10
2010 2 14
2010 2 13
2010 3 20
2010 3 16
2010 3 15
2010 3 18
2010 3 17
2010 3 13
2010 4 20
2010 4 16
2010 4 15
2010 4 18
2010 4 13
2010 5 20
2010 5 16
2010 5 15
2010 5 18
2010 5 17
2010 5 13
2010 6 13
2010 7 4
2010 7 7
2010 7 5
2010 7 6
2010 7 13
2010 8 8
2010 9 3
2010 9 18
2010 10 3
2010 10 18
2010 11 3
2010 12 9
2010 13 2
2010 14 15
2010 15 16
2010 16 1
\.
Paul Hedin
ex-luern
Hors ligne
#16 Thu 29 January 2015 14:04
Re: Sauvegarde et restauration d'une base de donnée [Postgres/gis]
Dans Options 2 cocher:
Utiliser les colonnes pour les INSERT
Utiliser des commandes pour les INSERT
La commande COPY n'est pas supportée par l'interface pgAdmin; pour l'utiliser il faut lancer psql
Dernière modification par jmarsac (Thu 29 January 2015 19:05)
Jean-Marie
Azimut
Hors ligne
#17 Thu 29 January 2015 14:18
- PaulH
- Participant assidu
- Lieu: Nantes
- Date d'inscription: 1 Aug 2007
- Messages: 463
Re: Sauvegarde et restauration d'une base de donnée [Postgres/gis]
Si vous parlez des options lors de la sauvegardes, oui je les avais bien cochées pourtant.
Paul Hedin
ex-luern
Hors ligne
#18 Thu 29 January 2015 15:30
Re: Sauvegarde et restauration d'une base de donnée [Postgres/gis]
Pourriez-vous vérifier, lorsque ces cases sont cochées, la commande COPY est remplacée par des instructions INSERT :
Code:
-- -- TOC entry 3914 (class 0 OID 123572) -- Dependencies: 354 -- Data for Name: tmp_majic_voies; Type: TABLE DATA; Schema: public; Owner: smdev -- COPY tmp_majic_voies (cident, clibvoi) FROM stdin; 8800020010 DE BLAYE 8800020020 DE L EGLISE 8800020021 DE VAUBEXY 8800020030 GRANDE RUE 8800020040 DE RABIEMONT 8800020050 DE REVION 880002B001 LES ANGLES 880002B002 BASSE DE TRAN
Code:
-- -- TOC entry 3914 (class 0 OID 123572) -- Dependencies: 354 -- Data for Name: tmp_majic_voies; Type: TABLE DATA; Schema: public; Owner: smdev -- INSERT INTO tmp_majic_voies (cident, clibvoi) VALUES ('8800020010', 'DE BLAYE'); INSERT INTO tmp_majic_voies (cident, clibvoi) VALUES ('8800020020', 'DE L EGLISE'); INSERT INTO tmp_majic_voies (cident, clibvoi) VALUES ('8800020021', 'DE VAUBEXY'); INSERT INTO tmp_majic_voies (cident, clibvoi) VALUES ('8800020030', 'GRANDE RUE'); INSERT INTO tmp_majic_voies (cident, clibvoi) VALUES ('8800020040', 'DE RABIEMONT'); INSERT INTO tmp_majic_voies (cident, clibvoi) VALUES ('8800020050', 'DE REVION'); INSERT INTO tmp_majic_voies (cident, clibvoi) VALUES ('880002B001', 'LES ANGLES'); INSERT INTO tmp_majic_voies (cident, clibvoi) VALUES ('880002B002', 'BASSE DE TRAN');
Jean-Marie
Azimut
Hors ligne
#19 Mon 02 February 2015 12:22
- PaulH
- Participant assidu
- Lieu: Nantes
- Date d'inscription: 1 Aug 2007
- Messages: 463
Re: Sauvegarde et restauration d'une base de donnée [Postgres/gis]
Bonjour,
Effectivement j'ai du me tromper dans les versions des fichiers. J'ai bien la commande INSERT INTO maintenant. Ca ne fonctionne pas pour autant, j'ai cette fois le message d'erreur:
ERREUR: la relation « public.activite_club_sport » n'existe pas
********** Erreur **********
ERREUR: la relation « public.activite_club_sport » n'existe pas
État SQL :42P01
L'erreur ne donne pas de ligne où regardé.
Je vous transmets le fichier en pj.
Paul Hedin
ex-luern
Hors ligne
#20 Mon 02 February 2015 14:13
Re: Sauvegarde et restauration d'une base de donnée [Postgres/gis]
Bonjour,
Si je regarde les échanges que vous avez eu, vous avez exporté un schéma. S'il y a des données dans public elles ne sont pas dans la sauvegarde. Deux solutions :
1. la bonne méthode est de ne pas stocker de données dans le schéma public, donc tu peux déplacer les tables ET les séquences qui s'y trouvent sauf celles qui concernent spatial_ref_sys et la vue geometry_column, geography_column, etc. Donc surtout "public.activite_club_sport"
2. cocher la case "public" dans les objets exportés, mais là tu vas avoir des problèmes à l'import de ta sauvegarde.
Y.
Yves Jacolin, bénévole de l'association GeoRezo.net, agit au nom et pour le compte de l'association - Partageons ce qui nous départage !! - GeoRezo vous aide ? Aidez GeoRezo !
Hors ligne
#21 Mon 02 February 2015 14:20
Re: Sauvegarde et restauration d'une base de donnée [Postgres/gis]
Vérifiez que les références à la table activite_club_sport sont bien précédées du nom du schéma (oql) ou que l'instruction
Code:
SET search_path = oql, public, pg_catalog;
est bien présente en début de script (elle doit çetre exécutée après la création du schéma oql
Jean-Marie
Azimut
Hors ligne
#22 Mon 02 February 2015 14:35
- PaulH
- Participant assidu
- Lieu: Nantes
- Date d'inscription: 1 Aug 2007
- Messages: 463
Re: Sauvegarde et restauration d'une base de donnée [Postgres/gis]
Oui Yves c'est la solution 1 que je souhaite faire déplacer les tables et les séquences dans un autre schéma. Au départ les données ont été créée sans objectifs clairs et mis dans public, je souhaite maintenant les intégrer dans notre système en les déplaçant dans un schéma spécifique au sein de notre BD de production.
Je vous mets en pj le début du script, j'ai bien changé
SET search_path = oql, public, pg_catalog;
au départ.
Dernière modification par luern (Mon 02 February 2015 16:06)
Paul Hedin
ex-luern
Hors ligne
#23 Thu 05 February 2015 11:02
- PaulH
- Participant assidu
- Lieu: Nantes
- Date d'inscription: 1 Aug 2007
- Messages: 463
Re: Sauvegarde et restauration d'une base de donnée [Postgres/gis]
Re,
excusez-moi de revenir à la charge mais voyez-vous le problème lié à la manipulation?
Avez-vous une idée de pourquoi ça ne marche pas?
Je vous remercie.
Paul Hedin
ex-luern
Hors ligne
Pages: 1
- Sujet précédent - Sauvegarde et restauration d'une base de donnée [Postgres/gis] - Sujet suivant