IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SQLite Discussion :

Comment créer ma base sqlite3


Sujet :

SQLite

  1. #1
    Futur Membre du Club
    Homme Profil pro
    retraité en informatique
    Inscrit en
    Novembre 2013
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Lot (Midi Pyrénées)

    Informations professionnelles :
    Activité : retraité en informatique
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Novembre 2013
    Messages : 6
    Points : 5
    Points
    5
    Par défaut Comment créer ma base sqlite3
    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:
    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
    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
    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
    );
    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
    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]');
    J'ai fait des essais avec foreign key
    dans enfants, j'ai ajoutée les lignes suivantes sans problème:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    FOREIGN KEY(famille) REFERENCES mariages(famille)
    FOREIGN KEY(enfant) REFERENCES individus(individus)
    idem pour mariages :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    FOREIGN KEY(mari) REFERENCES individus(individus)
    FOREIGN KEY(femme) 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
    3
    4
        PRIMARY KEY(enfant)
     
    sqlite> .import ../enfants.csv enfants
    Error: column enfant is not unique
    Je le répète, je suis newwbee ...
    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+

  2. #2
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 031
    Points : 40 930
    Points
    40 930
    Billets dans le blog
    62
    Par défaut
    Bonjour,

    a mon avis, il s'agit simplement d'une erreur dans le fichier enfants.CSV
    à moins que le cas des familles recomposées existe impliquant qu'un même individu appartienne à deux (ou plus) familles ? auquel cas la colonne enfant ne peut être utilisée comme clé unique
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  3. #3
    Futur Membre du Club
    Homme Profil pro
    retraité en informatique
    Inscrit en
    Novembre 2013
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Lot (Midi Pyrénées)

    Informations professionnelles :
    Activité : retraité en informatique
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Novembre 2013
    Messages : 6
    Points : 5
    Points
    5
    Par défaut [Abandonné] Comment créer ma base de donnée sqlite3
    Bon , les vérifications manuelles étant assez pénibles (je n'avais pas envie de faire un prog pour vérifier), j'ai réouvert Gramps et ai retenté l'export sqlite. Ce que je n'avais pas saisi, vu l'extension utilisé (sql) c'est que l'export n'était pas du sql texte, mais du sqlite3.

    Donc partant de là, j'ai procédé de la manière suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    .restore main export.sqlite
    .output dump.sql
    .dump
    .quit
    Et j'ai obtenu un fichier sql texte pour sqlite3 que j'ai ensuite converti en sql pour mariadb avec l'outil suivant que j'ai trouvé sur le net:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cat dump.sql | python ../sqlite3-to-mysql.py > mariadb.sql
    Et j'ai obtenu la base entière avec toutes les tables contrairement à l'export CSV qui ne donnet que les 3 tables principales, mais rien des relations et index.

    Bref, la question ne se pose même plus (enfin pour le moment).

    Merci
    A+

Discussions similaires

  1. [C#/SQL Server 2005] Comment créer une base de donnée par le code ?
    Par FraktaL dans le forum Accès aux données
    Réponses: 4
    Dernier message: 09/09/2006, 17h27
  2. Comment créer une base utilisable sur PC sans ACCESS
    Par lesalloues dans le forum Runtime
    Réponses: 4
    Dernier message: 22/08/2006, 14h52
  3. Comment créer une base de donnée dans un fichier .txt
    Par vantoff dans le forum C++Builder
    Réponses: 9
    Dernier message: 19/07/2006, 19h44
  4. Comment créer une base de donnée Access ?
    Par Soulama dans le forum Bases de données
    Réponses: 1
    Dernier message: 24/10/2005, 14h56
  5. [débutant] Comment créer une base ?
    Par laffreuxthomas dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 14/12/2004, 22h12

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo