Vous n'êtes pas identifié(e).
- Contributions : Récentes | Sans réponse
Pages : 1
#1 28/12/2009 15:41:56
- unisol
- Membre
importation access vers postgres
Bonjour,
j'ai importé une base de données ACCESS dans postgres par le moyen d'un export
via le menu access "Export" et la présence d'une passerelle ODBC postgres.
Mon problème réside dans le fait que les champs de type "Auto-incrément"
ont disparus et été transformés par un type "Integer"
après quelques recherches, le type "Auto-incrément" se nomme "Serial" sous Postgres.
A noter que lors de l'edition des propriétés de mon Id (Integer) dans l'intention de le
transformer en "Serial", ce choix n'est pas possible. Je peux certes le changer en
d'autres types, mais pas "Serial".
questions annexe.
existe t'il un outil pour exporter toutes une base access vers postgres et qui marche...
Merci pour aide.
unisol,
Hors ligne
#2 28/12/2009 15:50:11
- gleu
- Administrateur
Re : importation access vers postgres
serial est un pseudo-type qui est ensuite transformer en integer avec une valeur par défaut correspondant à la valeur suivante d'une séquence. Donc le fait qu'il ait transformé la colonne auto-incrémentée par une colonne de type integer n'est pas une erreur. Par contre, il aurait dû ajouter une séquence et la lier à la colonne. Si c'est le seul problème, autant le faire soi-même, c'est assez rapide.
Guillaume.
Hors ligne
#3 28/12/2009 15:52:12
- gleu
- Administrateur
Re : importation access vers postgres
Quant aux outils de migration, voir http://wiki.postgresql.org/wiki/Convert … oft_Access
Guillaume.
Hors ligne
#4 28/12/2009 15:54:19
- unisol
- Membre
Re : importation access vers postgres
Bonjour,
merci pour votre réponse.
cette partie de votre réponse est peu claire pour moi.
"Par contre, il aurait dû ajouter une séquence et la lier à la colonne"
je comprend par la qu'une autre colonne doit cooexister en parallèle ?
pouvez me donner un exemple, car je galère depuis plusieurs jours.
merci
Hors ligne
#5 28/12/2009 16:00:49
- Marc Cousin
- Membre
Re : importation access vers postgres
Un exemple :
test=# CREATE TABLE toto (a serial);
NOTICE: CREATE TABLE will create implicit sequence "toto_a_seq" for serial column "toto.a"
CREATE TABLE
test=# \d toto
Table "public.toto"
Column | Type | Modifiers
--------+---------+--------------------------------------------------
a | integer | not null default nextval('toto_a_seq'::regclass)
test=# \d toto_a_seq
Sequence "public.toto_a_seq"
Column | Type | Value
---------------+---------+---------------------
sequence_name | name | toto_a_seq
last_value | bigint | 1
start_value | bigint | 1
increment_by | bigint | 1
max_value | bigint | 9223372036854775807
min_value | bigint | 1
cache_value | bigint | 1
log_cnt | bigint | 1
is_cycled | boolean | f
is_called | boolean | f
Les séquences sont des objets différents des tables. Mais souvent utilisés pour faire des champs auto incrémentés.
Pour plus d'infos sur les séquences :
http://docs.postgresql.fr/8.4/sql-createsequence.html
Si j'avais voulu créer ma colonne a de la table toto en tant qu'entier et ensuite utiliser une séquence, j'aurais du faire (je choisis délibérément dans l'exemple de créer une nouvelle séquence) :
CREATE sequence seq2;
CREATE SEQUENCE
test=# ALTER TABLE toto ALTER a SET default nextval('seq2'::regclass);
ALTER TABLE
Marc.
Hors ligne
#6 28/12/2009 16:01:19
- gleu
- Administrateur
Re : importation access vers postgres
Tout ça se trouve dans le chapitre 8.1.4 de la documentation : http://docs.postgresqlfr.org/8.4/dataty … ype-serial
Guillaume.
Hors ligne
#7 28/12/2009 18:06:24
- unisol
- Membre
Re : importation access vers postgres
Bonjour,
je suis arrivé àreproduier certains de tes indications
creation de trable, ajout de données etc... ça marche
j'ai bien compris que l'objet sequence est "différent" du simple concepte "autoincrement"
je crois meme percevoir une bien plus grande puissance.
ce que je j'ai réussi à créer est une table toto avec un champs memo
et lien ce champs à une sequence.
le champs a ne se complete de lui meme .
mais ceci n'est pas grave pour le moment
car mes champs champs "id" eux le sont
mais lorsque j'écris :
CREATE SEQUENCE equipements_id_seq;
CREATE SEQUENCE
ALTER TABLE equipements ALTER id_equipement SET default nextval('equipements_id_seq'::regclass);
ALTER TABLE
j'ai dabord une erreur au mot "TABLE"
j'au exécuté les 2 premières lignes sans erreurs
puis avec les 2 dernières
j'ai ceci :
ERREUR: erreur de syntaxe sur ou près de « TABLE »
LINE 3: ALTER TABLE equipements ALTER id_equipement SET default next...
^
********** Erreur **********
ERREUR: erreur de syntaxe sur ou près de « TABLE »
État SQL :42601
Caractère : 59
Hors ligne
#8 28/12/2009 18:27:43
- gleu
- Administrateur
Re : importation access vers postgres
Il ne faut pas écrire le deuxième "CREATE SEQUENCE" ainsi que le deuxième "ALTER TABLE". C'est psql qui est sensé le renvoyer.
Guillaume.
Hors ligne
#9 03/02/2010 12:28:18
- unisol
- Membre
Re : importation access vers postgres
Bonjour,
je reviens vers vous afin de clarifier 2 points qui restent obscure pour moi.
j'ai transféré une base access vers postgres.
les champs de type "Autoincrement" ont disparu au passage. (normal)
je souhaite rétablir l'équivalent sous postgres;
à savoir un champ de type UNIQUE et ayant la propriété de gérer
une incrémentation de la valeur en cours contenu dans le champs.
j'ai été aidé et j'ai réussi à obtenir ce résultat.
je souhaite l'appliquer aux autres tables.
en exécutant la requête suivante :
CREATE SEQUENCE articles_id_article_seq;
ALTER TABLE articles ALTER COLUMN id_article SET DEFAULT nextval('articles_id_article_seq'::regclass);
j'arrive bien à créer une séquence et à l'attribuer:
"Valeurs par défaut" >> nextval('articles_id_article_seq'::regclass)
la propriété "Sequence" reste vide
pouvez m'aider ?
merci d'avance.
Hors ligne
#10 03/02/2010 13:01:15
- Marc Cousin
- Membre
Re : importation access vers postgres
La propriété Sequence de quoi ?
Marc.
Hors ligne
#11 03/02/2010 14:42:10
- unisol
- Membre
Re : importation access vers postgres
propriété "Sequence"
du champs articles_id
de ma table Articles sur une base Postgres
Hors ligne
#12 03/02/2010 19:04:36
- Marc Cousin
- Membre
Re : importation access vers postgres
Ça n'existe pas. La séquence est un objet de la base de données. On peut s'en servir pour attribuer une ou des valeurs par défaut à des colonnes pour faire une séquence, mais ce n'est qu'une des possibilités.
En fait je simplifie un peu : on peut aussi déclarer une séquence comme 'appartenant' à une colonne de table. L'intérêt étant que la séquence sera droppée en même temps que cette colonne. C'est une des choses qui se font implicitement quand on déclare une colonne comme étant de type serial.
Cf ALTER SEQUENCE : http://docs.postgresql.fr/8.4/sql-altersequence.html
l'option est owned by
Dernière modification par Marc Cousin (03/02/2010 19:05:00)
Marc.
Hors ligne
#13 03/02/2010 19:07:34
- unisol
- Membre
Re : importation access vers postgres
Je suis daccord avec, mais comment lier un champs à cet objet ?
merci
Hors ligne
#14 03/02/2010 19:10:51
- Marc Cousin
- Membre
Re : importation access vers postgres
Lier un champ à une sequence ? C'est le default nextval qui le fait :
ALTER TABLE articles ALTER COLUMN id_article SET DEFAULT nextval('articles_id_article_seq'::regclass);
dit à postgresql d'utileser la séquence articles_id_article_seq pour générer les valeurs par défaut de la colonne id_article de la table article.
Marc.
Hors ligne
#15 03/02/2010 19:15:16
- unisol
- Membre
Re : importation access vers postgres
ceçi a été fait, et la propriété "Valeur default" est correctement valorisé par : nextval('articles_id_article_seq'::regclass)
par contre la ligne "Sequence reste vide (je fais attention de ne pas utiliser le mot propriété :-)
ma question reste donc entère
Hors ligne
#16 03/02/2010 20:27:14
- gleu
- Administrateur
Re : importation access vers postgres
Une copie d'écran pourrait aider à mieux comprendre ce que vous voyez.
Guillaume.
Hors ligne
#17 04/02/2010 13:51:11
- unisol
- Membre
Re : importation access vers postgres
voici une capture à cette adresse (je n'ai pas d'option d'insertion d'image dans le forum)
http://unigest-solutions.com/fichiers_c … stgres.jpg
merci
Hors ligne
#18 04/02/2010 16:11:38
- Marc Cousin
- Membre
Re : importation access vers postgres
Cette information doit correspondre à l'option owned by de alter sequence dont je parlais quelques posts plus haut.
Marc.
Hors ligne
#19 04/02/2010 17:51:24
- gleu
- Administrateur
Re : importation access vers postgres
Exact, ça correspond à l'option OWNED BY.
Guillaume.
Hors ligne
#20 20/06/2013 15:14:45
- BADAN
- Membre
Re : importation access vers postgres
Bonjour à tous, comment allez vous? j'ai un problème avec MS Access.
Je désire transférer ma base de données de ACCESS vers POSTGRESQL. j'ai installé un pilote psqlodbc. Ensuite j'ai établie une connexion entre ma base Access et ma base de données postgreSQL. J'ai transférer mes tables de Access à postgres. Pour établir les contraintes (clé primaire et secondaire), postgres refuse. j'ai supprimé alors les données à l’intérieur des tables et il m'a permis d'établir mes contraintes. Cependant pour effectuer mes requêtes, il a fallu que je crée des tables liées sous Access pour mettre à jour mes tables sur postgresql. lorsque je tente de copier et d coller les données à l'intérieur des tables liées pour pouvoir les retrouver sur postgres, le message suivant apparaît ODBC---Echec d'insertion sur une table<< public_cas_d_méningite>>attachée.
Es ce que vous avez été déjà confronté un problème pareille. Pouvez vous m'indiquez des solutions?
Hors ligne
Pages : 1