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

SQL Procédural MySQL Discussion :

Import d'une table trop longue ( x heures) [MySQL-8.0]


Sujet :

SQL Procédural MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    data analyst
    Inscrit en
    Juillet 2021
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : data analyst

    Informations forums :
    Inscription : Juillet 2021
    Messages : 26
    Par défaut Import d'une table trop longue ( x heures)
    Hello

    J'ai l'impression que plus j'utilise la fonction d'import de données, plus c'est long

    Y a t-il un système de cache ou quelque chose du genre qui fait que l'import de ma table de 30 000 rows prenne 3min la première fois, puis 1h la 3eme ou 4eme fois (je recommence plusieurs fois la même table car je ne connais pas encore très bien les bons types à paramétrer)

    ma config : ryzen5 3600 3.9 ghz
    16go RAM
    (je précise car je suis en local)

    Comment faire pour aller plus vite lors d'un import via fichier .csv ? (paramètre SSH peut être ?)

    J'ai songé à redémarrer le service par exemple je ne sais pas si ça servirait... (ça semble fonctionner, mais pourquoi ?)

    ps : j'utilise mysql workbench

  2. #2
    Expert confirmé
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 438
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 438
    Par défaut
    Bonjour,
    Il faudrait connaitre la structure de la table (colonnes, clé, indexes, contraintes), le moteur utilisé (myISAM, InnoDB, autre), le sous-système disque.
    Bref il nous manque pas mal d'infos.

    Tatayo.

  3. #3
    Membre averti
    Homme Profil pro
    data analyst
    Inscrit en
    Juillet 2021
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : data analyst

    Informations forums :
    Inscription : Juillet 2021
    Messages : 26
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    CREATE TABLE Localite (
                    localite_id INT AUTO_INCREMENT NOT NULL,
                    num_voie INT,
                    nom_voie CHAR(200) NOT NULL,
                    cp char(10) NOT NULL,
                    commune CHAR(100) NOT NULL,
                    dpt_id char(10) NOT NULL,
                    commune_id SMALLINT NOT NULL,
                    PRIMARY KEY (localite_id)
    InnoDB
    SSD 870 Qvo

  4. #4
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 608
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 608
    Billets dans le blog
    10
    Par défaut
    Bonjour,

    Si c'est toujours le même fichier qui est chargé, il faut activer l'option REPLACE pour annuler et remplacer le contenu, sinon, toutes les lignes pour lesquelles une contrainte unique est violée est mise à l'écart, ce qui prend du temps.
    Autre solution : vider la table par un truncate et la charger.

    Par ailleurs, cette table a une structure bien curieuse pour ne pas dire plus :
    • Avoir à la fois le libellé de la commune et son identifiant n'est pas normal, seul l'identifiant devrait être présent pour permettre de faire une jointure vers la table des communes et éviter ainsi les redondances
    • Il en va de même pour le département qui n'a rien à faire dans cette table. On devrait trouver l'identifiant du département comme FK de la table des communes, permettant de faire la jointure avec la table des départements.
    • L'identifiant du département ne devrait pas être un char(10) mais un small integer.
    • De plus, le nom de la voie en char(200) est un mauvais choix, du varchar(38) comme le prévoit la norme de la poste doit suffire.
    • Et il manque le type de voie (boulevard, rue, impasse, etc.)

  5. #5
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 135
    Par défaut
    Bonjour,

    Citation Envoyé par escartefigue Voir le message
    cette table a une structure bien curieuse pour ne pas dire plus
    Je me suis fait la même réflexion. Toutefois, il s'agit d'une table destinée à recevoir le contenu d'un fichier importé.
    Rien ne dit que cette table ne sert pas uniquement de stockage temporaire et que ces données ne seront pas transférées ensuite dans des tables à la structure plus normalisée.
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  6. #6
    Membre averti
    Homme Profil pro
    data analyst
    Inscrit en
    Juillet 2021
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : data analyst

    Informations forums :
    Inscription : Juillet 2021
    Messages : 26
    Par défaut
    Citation Envoyé par al1_24 Voir le message
    Bonjour,



    Je me suis fait la même réflexion. Toutefois, il s'agit d'une table destinée à recevoir le contenu d'un fichier importé.
    Rien ne dit que cette table ne sert pas uniquement de stockage temporaire et que ces données ne seront pas transférées ensuite dans des tables à la structure plus normalisée.
    Citation Envoyé par escartefigue Voir le message
    Bonjour,

    Si c'est toujours le même fichier qui est chargé, il faut activer l'option REPLACE pour annuler et remplacer le contenu, sinon, toutes les lignes pour lesquelles une contrainte unique est violée est mise à l'écart, ce qui prend du temps.
    Autre solution : vider la table par un truncate et la charger.

    Par ailleurs, cette table a une structure bien curieuse pour ne pas dire plus :
    • Avoir à la fois le libellé de la commune et son identifiant n'est pas normal, seul l'identifiant devrait être présent pour permettre de faire une jointure vers la table des communes et éviter ainsi les redondances
    • Il en va de même pour le département qui n'a rien à faire dans cette table. On devrait trouver l'identifiant du département comme FK de la table des communes, permettant de faire la jointure avec la table des départements.
    • L'identifiant du département ne devrait pas être un char(10) mais un small integer.
    • De plus, le nom de la voie en char(200) est un mauvais choix, du varchar(38) comme le prévoit la norme de la poste doit suffire.
    • Et il manque le type de voie (boulevard, rue, impasse, etc.)
    Eh bien écoutez messieurs, vous irez chercher votre chèque auprès d'open classrooms car vous êtes en train de corriger mon travail à leur place

    En effet je suis encore un fœtus qui apprend tout juste à remplir une base de donnée, il est donc normal que vous trouviez ce genre d'imperfections...

    concernant le REPLACE, je ne m'en suis pas servi car j'ai directement drop la table depuis le schéma avec un clique droit. Est-ce différent de REPLACE ?

    Vous avez raison je vais faire une table commune, ça fera 4 tables au lieu de 3 sur mon MPD ce sera moins redondant que d'avoir 7 colonnes par table...

    id département en char car il existe des départements avec des lettres.
    type de voie je vois pas l’intérêt de le préciser il s'agit juste d'une modélisation des valeurs foncières des biens vendus en 2020, rue numéro de voie et commune me permette d'identifier le bien de manière unique.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Importation d'une table excel avec nom paramétrable
    Par mastasushi dans le forum Access
    Réponses: 4
    Dernier message: 13/02/2007, 19h20
  2. Automatiser l'importation d'une table
    Par Yohann_x dans le forum Access
    Réponses: 1
    Dernier message: 10/07/2006, 15h06
  3. import d'une table access ds mysql
    Par nogood1 dans le forum SQL Procédural
    Réponses: 4
    Dernier message: 26/05/2006, 14h12
  4. Import d'une table avec un blob
    Par genio dans le forum Oracle
    Réponses: 5
    Dernier message: 10/05/2006, 21h08
  5. import d'une table avec HUGEBLOB trop log
    Par tonton62 dans le forum Oracle
    Réponses: 1
    Dernier message: 05/04/2006, 10h21

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