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

Administration MySQL Discussion :

Type de donnée de colonne avec donnée à virgule et date


Sujet :

Administration MySQL

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2016
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2016
    Messages : 44
    Points : 35
    Points
    35
    Par défaut Type de donnée de colonne avec donnée à virgule et date
    BONJOURS,

    Je suis sous mysql 5.7.15 et j'ai fais l'importation de plusieurs fichiers CSV avec LOAD DATA INFILE......
    Mais je rencontre plusieurs problème de même type qui est lié au type de données de certaines colonnes.

    1.PREMIER FICHIER; J'ai une colonne avec ce type de données 612.3.7091.21078, en créant ma table j'ai attribué à cette colonne les différents types de données FLOAT(4,3) et DECIMAL(4,3) mais dans il y' a que la première serie de chiffre qui est prise en compte 612 et les autres n'apparaîssent pas dans la table c-à-d .3.7091.21078

    2.DEUXIEME FICHIER; j'ai plusieurs colonnes ici, qui dans la première colonne le type de donné est de ce type -3,941 et une autre colonne qui a des données de ce type 5,308 et je essayé l'importation avec ces types de données FLOAT(4,3) et DECIMAL(4,3) il y' a que le premier chiffre avant la virgule -3 et 5 qui est prit en compte. il y'a aussi maintenant deux colonnes qui portent des dates et ces dates affichent 0000-00-00 dans la table. mais je fais un constat ici c'est que dans mon fichier les dates sont de ce type jj-mm-aaaa et je constate dans la table qu'elle affiche l'année d'abord aaaa-mm-jj (0000-00-00).
    Comment pourais-je resoudre ces problèmes? Merci pour votre attention!

    CORDIALEMENT.

  2. #2
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 346
    Points : 18 958
    Points
    18 958
    Par défaut
    Salut seydina10.

    Pour votre donnée : "612.3.7091.21078", même si cela contient des chiffres et des points, ce n'est pas un nombre.
    En faisant une recherche sur le net, je constate que vous avez déjà posé la question ailleurs.

    Au lieu de de faire un long discours, voici le fichier que j'ai pris comme exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    612.3.7091.21078 ;          \N ; -44,32  
    125.4.5055.22158 ;  17/10/2016 ; -3,941  
    436.7.2222.15033 ;  25/03/2015 ;  5,308
    Et voici le chargement dans une table, avec vos contraintes :
    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
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    --------------
    SET AUTOCOMMIT = 0
    --------------
     
    --------------
    START TRANSACTION
    --------------
     
    --------------
    DROP DATABASE IF EXISTS `base`
    --------------
     
    --------------
    CREATE DATABASE IF NOT EXISTS `base`
            DEFAULT CHARACTER SET `latin1`
            DEFAULT COLLATE       `latin1_general_ci`
    --------------
     
    --------------
    DROP TABLE IF EXISTS trav
    --------------
     
    --------------
    CREATE TABLE trav (
      col_num   decimal(15,2) null default null,
      col_char  varchar(255)  null default null,
      col_date  date          null default null
    ) ENGINE=InnoDB
      DEFAULT CHARSET=`latin1` COLLATE=`latin1_general_ci`
      ROW_FORMAT=COMPRESSED
    --------------
     
    --------------
    LOAD DATA LOCAL INFILE 'fichier.txt'
         INTO TABLE `trav`
         CHARACTER SET latin1
         FIELDS TERMINATED            BY ';'
                OPTIONALLY ENCLOSED   BY '\"'
                ESCAPED               BY '\\'
         LINES  TERMINATED            BY '\r\n'
         IGNORE 0 LINES
         (@F1,@F2,@F3)
         set col_num  =     replace(trim(@F3), ',', '.'),
             col_char =             trim(@F1),
             col_date = str_to_date(trim(@F2), '%d/%c/%Y')
    --------------
     
    --------------
    select * from trav
    --------------
     
    +---------+------------------+------------+
    | col_num | col_char         | col_date   |
    +---------+------------------+------------+
    |  -44.32 | 612.3.7091.21078 | NULL       |
    |   -3.94 | 125.4.5055.22158 | 2016-10-17 |
    |    5.31 | 436.7.2222.15033 | 2015-03-25 |
    +---------+------------------+------------+
    --------------
    COMMIT
    --------------
     
    --------------
    SET AUTOCOMMIT = 0
    --------------
     
    Appuyez sur une touche pour continuer...
    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2016
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2016
    Messages : 44
    Points : 35
    Points
    35
    Par défaut
    SALUT ARTEMUS,

    merci pour votre attention, j'apprécie beaucoup votre réaction. j'aimerai être mieux éclairer plus que vos mieux comprendre la pêche que de recevoir du poisson, du coup je repond et je vous pose toutes ces questions respectivement et je serai bref comme vous;
    -si ce n'est pas un nombre qu'est ce que c'est ?
    -oui j'ai bien posé cette question laba.
    -si je comprends bien pour mes données de ce type "612.3.7091.21078'' il faut que j'utilise VARCHAR?
    -et j'aimerai comprendre ces différentes options de requête tel

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    ROW_FORMAT=COMPRESSED
    (@F1,@F2,@F3)
         set col_num  =     replace(trim(@F3), ',', '.'),
             col_char =             trim(@F1),
             col_date = str_to_date(trim(@F2), '%d/%c/%Y')
    j' exécuterai cette requête dès que je serai sur l'ordinateur qui contient la base.


    CORDIALEMENT

  4. #4
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 346
    Points : 18 958
    Points
    18 958
    Par défaut
    Salut Seydina10.

    Citation Envoyé par seydina10
    -si ce n'est pas un nombre qu'est ce que c'est ?
    Une référence à un produit, sinon, je n'en sais pas plus.

    Citation Envoyé par seydina10
    -si je comprends bien pour mes données de ce type "612.3.7091.21078'' il faut que j'utilise VARCHAR?
    Oui, en attendant d'en savoir plus.

    Citation Envoyé par seydina10
    -et j'aimerai comprendre ces différentes options de requête tel que :
    Il s'agit de compresser les données qui sont stockées dans votre table.
    Cela permet de réduire la volumétrie des données stockées sur votre disque dur.

    Ce sont les noms que j'ai attribué aux colonnes de votre fichiers excel.
    Ce qui se trouve en première position dans votre fichier Excel, je l'ai nommé "@F1".
    En deuxième position, "@F2" et ainsi de suite.

    Ce sont des variables temporaires qui vont subir un traitement.
    Si vous désirez faire le lien directement vers la colonne de la table, sans rien modifier, il suffit par exemple de remplacer "@F1" par "col_char".

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    set col_num  =     replace(trim(@F3), ',', '.'),
    Vous avez un problème de représentation du format de votre nombre.
    Le nombre est écrit au format français, c'est-à-dire avec une virgule.
    Pour exploiter correctement ce nombre sous MySql, vous devez utiliser le format anglais, c'est-à-dire avec un point.
    La fonction "replace" va substituer la virgule par un point et le résultat sera rangé dans la colonne "col_num" de votre table.

    Je ne sais pas si vous avez remarqué, mais dans le fichier excel, j'ai mis des espaces avant et après toutes vos données (la date, la chaîne de caractères et votre nombre).
    Pour les supprimer, il suffit d'utiliser la fonction "trim()".

    Si vous n'avez pas besoin de faire une correction sur votre chaîne de caractères, genre supprimer les espaces, au lieu de mettre ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    (@F1,@F2,@F3)
    ...
    col_char =             trim(@F1),
    Vous pouvez le remplacer par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    col_date = str_to_date(trim(@F2), '%d/%c/%Y')
    C'est une fonction qui transforme une chaîne de caractères dans le type "date".
    Pour ce faire, j'indique le format de la représentation des dates.
    Par exemple : "15/10/2016" donne comme format "jour/mois/année".
    Cela se traduit par : "%d/%c/%Y".
    Attention : "%d" et "%c" sont en minuscule et "%Y" est en majuscule.

    Vous trouverez la signification de cette codification ici : https://dev.mysql.com/doc/refman/5.5...on_date-format

    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2016
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2016
    Messages : 44
    Points : 35
    Points
    35
    Par défaut
    SALUT ARTEMUS,

    j'ai essayer tes requêtes mais c'est pas passé avec ta methodes je m'en suis inspiré pour esayer autre chose mais en vin. comme j'ai suis pris par le temps que je n'ai pas vraiment à cause du nombre de chose à faire, j'ai donc utilisé du VARCHAR comme tu l'a indiqué, pour tout ce qui me pose problème et comme c'est des colonnes qui je penses je ne m'apuyérai pas dessus pour des requêtes du coup je me dit il n'a pas de risque à utilisé du VARCHAR et ça a marché! toutes les colonnes ont leurs infos comme tel. si dans mon aventure il est nécessaire de revenir dessus je vous ferai signe je vous remercie pour l'aide et bonne continuité!

    CORDIALEMENT

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

Discussions similaires

  1. [COM] Mettre les données en colonne
    Par kaking dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 29/12/2009, 10h31
  2. Transfer de colonne avec données a une autre table
    Par clarkent dans le forum Langage SQL
    Réponses: 5
    Dernier message: 17/11/2009, 16h37
  3. Réponses: 4
    Dernier message: 03/11/2008, 14h41
  4. Réponses: 2
    Dernier message: 11/12/2007, 23h23
  5. [XPath] Afficher données en colonnes avec bris
    Par iDaaX dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 05/12/2006, 21h54

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