View previous topic :: View next topic |
Author |
Message |
vdenis06
Joined: 19 Apr 2015 Posts: 5
|
Posted: Sun Apr 19, 2015 4:36 pm Post subject: Import Gedcom : Key violation :( |
|
|
Bonjour,
Je viens de découvrir Smartgenealogy et je voudrais l'utiliser pour avoir un autre regard sur ma base et notamment les possibilités de fusion.
mon fichier Gedcom vient de l'application webtree (1.6.2) et contient 4841 individus, 1684 familles.
J'essaye d'importer un fichier Gedcom et systématiquement lorsque le compte de famille arrive à 776, j'ai le message "key violation"
j'ai déjà utilisé Gedcom validator pour détecter les incohérences: en dehors de qqs warning sur les documents attachés, pas d'erreur.
Que me suggèrerez vous pour comprendre ce qui se passe à partir de la famille 776 ?
Avez-vous un mode debug qui permettrait de récupérer le n° de ligne dans fichier Gedcom qui pose problème? ou les identifiants associés?
Smartgenealogy V3.0W
merci d'avance pour votre aide
Vincent |
|
Back to top |
|
|
ale Site Admin
Joined: 12 Apr 2005 Posts: 499 Location: Versailles, France
|
Posted: Mon Apr 20, 2015 8:30 pm Post subject: |
|
|
Bonsoir
Ouvrez votre fichier Gedcom dans le bloc-notes Windows.
Vous trouverez, souvent vers la fin du ficher, des lignes de la forme "0 @Fxxx@ FAM", avec xxx = une valeur numérique
Cherchez la 776eme ligne de ce format : Ce devrait être elle qui pose problème lors de l'importation.
Comme il s'agit d'une violation de clé, il est possible que vous ayez deux lignes de ce format qui portent le même numéro xxx |
|
Back to top |
|
|
vdenis06
Joined: 19 Apr 2015 Posts: 5
|
Posted: Tue Apr 21, 2015 6:51 am Post subject: |
|
|
Bonjour,
merci de votre suggestion.
vue la taille de mon fichier Gedcom ... 97000 lignes, j'ai utilisé Notepad++ qui m'a permis de trouver la 776 ième occurence de "^0 @F"
Je ne vois pas d'erreur flagrante:
(@F0887@ est la 776ième de mon fichier)
Code: |
0 @F0887@ FAM
1 HUSB @I2640@
1 WIFE @I2641@
1 SOUR @S3@
2 PAGE ACTE N° 9
1 CHIL @I197@
1 CHIL @I2632@
1 CHIL @I2633@
1 MARR
2 TYPE RELIGIOUS
2 DATE 02 MAY 1899
2 PLAC Rore-Sampeyre, Cuneo, Piemonte, Italie
2 ADDR San Nicola
2 SOUR @S20@
3 PAGE n° 9 - p 1307
0 @F1@ FAM
1 WIFE @I2@
1 HUSB @I0497@
1 MARR
2 DATE 16 SEP 2005
2 TYPE Religious
1 CHIL @I3@
1 CHIL @I4@
1 SOUR @S1@
|
Est-ce que la n° des Famille peut poser un problème ?
on passe de la F0887 à la F1
Code: |
Line 82535: 0 @F0886@ FAM
Line 82548: 0 @F0887@ FAM
Line 82572: 0 @F1@ FAM
Line 82586: 0 @F10@ FAM
Line 82598: 0 @F100@ FAM
Line 82606: 0 @F101@ FAM |
Si c'est le cas, avez vous une idée pour renuméroter les familles ?
Merci,
Vincent |
|
Back to top |
|
|
ale Site Admin
Joined: 12 Apr 2005 Posts: 499 Location: Versailles, France
|
Posted: Tue Apr 21, 2015 8:43 am Post subject: |
|
|
Bonjour
A priori, le fait de passer de F0887 à F1 ne devrait pas poser problème.
Par contre, vérifiez bien que vous n'avez pas dans votre fichier Gedcom deux lignes identiques "0 @F0887@ FAM" ou plus probablement "0 @F1@ FAM", ce qui génèrerait une violation de clé.
- Si c'est le cas, il suffit de remplacer dans votre fichier toutes les occurences de "@F1@" par, par exemple, "@F999991@" (Procéder de même pour tous les doublons qui pourraient exister : "@F10@", "@F100@", etc.)
- Si ce n'est pas le cas, vous pouvez m'envoyer votre fichier Gedcom pour analyse du problème. [mam75 (@) free (.) fr]
Bonne chance |
|
Back to top |
|
|
vdenis06
Joined: 19 Apr 2015 Posts: 5
|
Posted: Tue Apr 21, 2015 12:41 pm Post subject: |
|
|
re bonjour,
J'ai fais quelques tests et vérifications:
=> aucun doublon dans les référence aux familles ("0 @Fxxx@ FAM)
merci notepad++ pour les recherches sur des expressions régulières
Si je remplace le @F1@ qui venait après le @F0887@ (et bien sur toutes les occurrences dans le fichier)
=> par une valeur numériquement inférieure à 887 ça plante
tests avec 00001 et 000001 et 0000001.
=> par une valeur numériquement supérieure à 887 c'est ok
test avec @F999991@
C'est un peu fastidieux de remplacer toutes les références des familles à la main ...
il semble que votre code prenne en compte la valeur numérique du texte entre @F et @ et soit perturbé par une valeur inférieur à la précédente.
merci de votre aide |
|
Back to top |
|
|
vdenis06
Joined: 19 Apr 2015 Posts: 5
|
Posted: Tue Apr 21, 2015 2:22 pm Post subject: |
|
|
J'ai continué quelques tests et toutes les ref suivantes posent problème:
F10 vs F0010
F11 vs F0011
F12 vs F0012
Ce n'est sans doute pas cohérent dans la numérotation, mais dans la vraie vie ça arrive suite à quelques fusions pour intégrer des travaux existant.
à priori, c'est les 2 ref (par ex F10 et F0010) sont valides et distinctes suivant les specs de Gedcom 5.5 ou 5.5.1
Pouvez-vous regarder dans votre code comment sont traités les pointeurs XREF, pour lever le doute ?
Cdt,
Vincent |
|
Back to top |
|
|
ale Site Admin
Joined: 12 Apr 2005 Posts: 499 Location: Versailles, France
|
Posted: Wed Apr 22, 2015 3:19 pm Post subject: |
|
|
Bonjour
Dans SmartGenealogy, tous les identifiants XREF:FAM sont traités comme des nombres entiers.
On peut importer une famille "0010", mais elle sera écrite dans la base en tant que famille "10".
Il en est d'ailleurs de même pour XREF:INDI, XREF:SOUR et XREF:REPO
Même au cas où XREF:FAM serait traité comme une valeur texte, cela ne dispenserait pas de s'affranchir des doublons quand on veut faire une fusion de deux bases : Chacune des deux bases peut très bien avoir une famille "0010", ce qui induirait un problème de cohérence au moment de la fusion.
C'est ce que je fais dans MergeDB.exe (l'outil de fusion de bases fourni avec SmartGenealogy) : Les familles de la seconde base sont renumérotées pour se placer à la suite de la famille la plus élevée de la première base. |
|
Back to top |
|
|
vdenis06
Joined: 19 Apr 2015 Posts: 5
|
Posted: Wed Apr 22, 2015 3:37 pm Post subject: |
|
|
ok, merci pour les explications: j'ai donc du ménage à faire!
pour info, les outils comme GEDCOM validator ne détectent pas ce genre de situation.
cdt,
Vincent |
|
Back to top |
|
|
|