Bonjour,
je pars d'un export csv de Gramps (logiciel de généalogie).
Après quelques tatonnements, j'arrive à séparer les données dans des fichiers csv indépendants.
J'ai créé ensuite mes trois tables et y ait importé mes données.
Jusqu'à là, pas de problème, sauf que à partir d'un export je voudrait créer un fichier sql pour créer globalement ma base de données.
Mais il y a un problème, car je suis newbee avec sqlite3 et si j'ai bien les données, je ne sais pas comment indiquer les liens entre les tables.
Voici les commandes utlisées pour créer ma base:
Voici la structure que j'ai créée:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 sqlite> .read struct.sql sqlite> .mode csv sqlite> .separator ";" sqlite> .import ../individus.csv individus sqlite> .separator "," sqlite> .import ../mariages.csv mariages sqlite> .import ../enfants.csv enfants
Ensuite, voici une ligne de chaque table (la première n'étant que la liste des champs):
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38 CREATE TABLE individus ( "individu" CHAR(7) NOT NULL, "nom" CHAR(30) NOT NULL, "prenom" CHAR(50) NOT NULL, "usuel" CHAR(30), "suffixe" CHAR(30), "prefixe" CHAR(30), "titre" CHAR(30), "genre" CHAR(10), "d_naissance" CHAR(26), "l_naissance" CHAR(50), "s_naissance" CHAR(100), "d_bapteme" CHAR(26), "l_bapteme" CHAR(50), "s_bapteme" CHAR(100), "d_deces" CHAR(26), "l_deces" CHAR(50), "s_deces" CHAR(100), "d_inhumation" CHAR(26), "l_inhumation" CHAR(50), "s_inhumation" CHAR(100), "note" CHAR(300), PRIMARY KEY(individu) ); CREATE TABLE mariages ( "famille" CHAR(7) NOT NULL, "mari" CHAR(7) NOT NULL, "femme" CHAR(7) NOT NULL, "date" CHAR(26), "lieu" CHAR(50), "source" CHAR(100), "note" CHAR(300), PRIMARY KEY(famille) ); CREATE TABLE enfants ( "enfant" CHAR(7) NOT NULL, "famille" CHAR(7) NOT NULL );
J'ai fait des essais avec foreign key
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 individus: INSERT INTO "individus" VALUES('Individu ','Nom de famille','Prénom','Usuel','Suffixe','Préfixe','Titre','Genre','Date de naissance','Lieux de naissance','Source de naissance','Date du baptême','Lieu du baptême','Source du baptême','Date de décès','Lieux du décès','Source du décès','Date de l''inhumation','Lieu de l''inhumation','Source de l''inhumation','Note'); INSERT INTO "individus" VALUES('[I1271]','Aboneau','Jean','','','','','masculin','1751-10-27','Jumilhac-le-Grand - Auzelias (24630)','','','','','(date inconnue)','','','','','',''); mariages: INSERT INTO "mariages" VALUES('famille','mari','femme','date','lieu ','source ','note'); INSERT INTO "mariages" VALUES('[F0096]','[I1368]','[I0444]','2014-07-24','Saint-Paul-la-Roche (24800)','',''); enfants: INSERT INTO "enfants" VALUES('famille','enfant'); INSERT INTO "enfants" VALUES('[F0097]','[I0797]');
dans enfants, j'ai ajoutée les lignes suivantes sans problème:
idem pour mariages :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 FOREIGN KEY(famille) REFERENCES mariages(famille) FOREIGN KEY(enfant) REFERENCES individus(individus)
Par contre, si je rajoute une clé primaire à enfant, j'ai une erreur
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 FOREIGN KEY(mari) REFERENCES individus(individus) FOREIGN KEY(femme) REFERENCES individus(individus)
Je le répète, je suis newwbee ...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 PRIMARY KEY(enfant) sqlite> .import ../enfants.csv enfants Error: column enfant is not unique
Ou fais-je des erreurs ?
Qu'est-ce que je n'ai pas compris ?
J'ajoute, enfin que le but est ensuite d'exporter de sqlite à mariadb.
Merci
A+
Partager