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

Requêtes MySQL Discussion :

Requete pour convertir en datetime dans CSV


Sujet :

Requêtes MySQL

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Janvier 2010
    Messages : 71
    Points : 32
    Points
    32
    Par défaut Requete pour convertir en datetime dans CSV
    Bonjour,

    j'ai besoin d'aide pour une requête, j'ai deja passé 3 heures a essayer de trouver la requête, mais là je bloque

    je souhaite convertir une date français en datetime, dans une requête MySql

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    $q = "LOAD DATA LOCAL INFILE 'extracted/fichier.csv' INTO TABLE table FIELDS TERMINATED BY ';' ENCLOSED BY '' ESCAPED BY '' LINES TERMINATED BY '\n' IGNORE 1 LINES
    (ID, NOM, HOSTS, SYSDATE,EVT_DATE, LEVEL, FACILITY, PROGRAM, PID, MESSAGE)
    SET EVT_DATE = date_format(str_to_date(EVT_DATE, '%d/%m/%Y %H:%i:%s'), '%Y-%m-%d %T') ";
     
     
    mysql_query($q, $db);
    $req1 = mysql_query($q) or die('Erreur SQL !<br>'.$q.'<br>'.mysql_error()); 
     
    echo "Export Ok";
    le truc c'est que l'incrémentation dans la base marche si mon champs date "EVT_DATE" est en VARCHARD par exemple, mais si je modifie la structure pour la mettre en datetime, il insert "0000-00-00 00:00:00"

    merci d'avance

  2. #2
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    2 947
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 2 947
    Points : 5 846
    Points
    5 846
    Par défaut
    DATE_FORMAT retransforme la date en chaîne de caractère => arrêtez votre conversion à STR_TO_DATE.

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Janvier 2010
    Messages : 71
    Points : 32
    Points
    32
    Par défaut
    Citation Envoyé par skuatamad Voir le message
    DATE_FORMAT retransforme la date en chaîne de caractère => arrêtez votre conversion à STR_TO_DATE.
    merci mais je comprend pas tout, je dois simplement mettre DATE_FORMAT, pas besoin de STR_TO_DATE ?

    tu peux m'aider sur la syntaxe car c'est pas gagné

    $q = "LOAD DATA LOCAL INFILE 'extracted/fichier.csv' INTO TABLE table FIELDS TERMINATED BY ';' ENCLOSED BY '' ESCAPED BY '' LINES TERMINATED BY '\n' IGNORE 1 LINES
    (ID, NOM, HOSTS, SYSDATE,EVT_DATE, LEVEL, FACILITY, PROGRAM, PID, MESSAGE)
    SET EVT_DATE = date_format(str_to_date(EVT_DATE, '%d/%m/%Y %H:%i:%s'), '%Y-%m-%d %T') ";

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Janvier 2010
    Messages : 71
    Points : 32
    Points
    32
    Par défaut
    je vois pas trop ce que tu veux dire dans ton explication!!

    en faisant ce que je comprend, j'ai toujours "0000-00-00 00:00:00"
    $q = "LOAD DATA LOCAL INFILE 'extracted/rapport.csv' INTO TABLE tbl_logs FIELDS TERMINATED BY ';' ENCLOSED BY '' ESCAPED BY '' LINES TERMINATED BY '\n' IGNORE 1 LINES
    (id, SY_NOM, EVT_HOSTS, EVT_SYSDATE,EVT_DATE, EVT_LEVEL, EVT_FACILITY, EVT_PROGRAM, EVT_PID, EVT_MESSAGE)
    SET EVT_DATE = str_to_date('%d/%m/%Y %H:%i:%s', '%Y-%m-%d %T')";

  5. #5
    Membre émérite
    Homme Profil pro
    tripatouilleur de code pour améliorer mon quotidien boulistique
    Inscrit en
    Février 2008
    Messages
    939
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : tripatouilleur de code pour améliorer mon quotidien boulistique
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2008
    Messages : 939
    Points : 2 287
    Points
    2 287
    Par défaut
    Bonsoir,

    je suis plus que néophyte sur Mysql, mais peut-être pouvez vous essayer cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $q = "LOAD DATA LOCAL INFILE 'extracted/fichier.csv' INTO TABLE table FIELDS TERMINATED BY ';' ENCLOSED BY '' ESCAPED BY '' LINES TERMINATED BY '\n' IGNORE 1 LINES
    (ID, NOM, HOSTS, SYSDATE,EVT_DATE, LEVEL, FACILITY, PROGRAM, PID, MESSAGE)
    SET EVT_DATE = date_format((EVT_DATE, '%d/%m/%Y %H:%i:%s'), '%Y-%m-%d %T') ";

    Pierre

  6. #6
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    2 947
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 2 947
    Points : 5 846
    Points
    5 846
    Par défaut
    Non c'est le contraire, vous avez une colonne de type datetime, il faut donc convertir la chaine de caractère contenu dans le fichier en datetime avec str_to_date :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SET EVT_DATE = str_to_date(EVT_DATE, '%d/%m/%Y %H:%i:%s')

  7. #7
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    2 947
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 2 947
    Points : 5 846
    Points
    5 846
    Par défaut
    En fait il faut utiliser un paramètre, exemple avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    id;EVT_DATE
    1;01/01/2013 12:26:33
    1;05/03/2013 13:46:31
    1;26/12/2013 05:06:03
    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
    mysql> LOAD DATA LOCAL INFILE 'c:/test.csv' INTO TABLE test_evt 
        -> FIELDS TERMINATED BY ';' ENCLOSED BY '' ESCAPED BY '' LINES TERMINATED BY '\n' IGNORE 1 LINES
        -> (ID, @dte)
        -> SET EVT_DATE = str_to_date(@dte, '%d/%m/%Y %H:%i:%s');
    Query OK, 3 rows affected (0.13 sec)
    Records: 3  Deleted: 0  Skipped: 0  Warnings: 0
     
    mysql> select * from test_evt;
    +------+---------------------+
    | id   | evt_date            |
    +------+---------------------+
    |    1 | 2013-01-01 12:26:33 |
    |    1 | 2013-03-05 13:46:31 |
    |    1 | 2013-12-26 05:06:03 |
    +------+---------------------+
    3 rows in set (0.05 sec)
     
    mysql>

  8. #8
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Janvier 2010
    Messages : 71
    Points : 32
    Points
    32
    Par défaut
    c'est bien celle ci qui marche

    SET EVT_DATE = str_to_date(EVT_DATE, '%d/%m/%Y %H:%i:%s')
    Encore merci à tous, car j'ai bien galéré sur ce truc !! OUFF

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

Discussions similaires

  1. [VxiR2] Macro VBA pour convertir le rapport en CSV
    Par BipBipBO dans le forum Deski
    Réponses: 9
    Dernier message: 22/06/2010, 14h05
  2. [VBA] Macro pour convertir le rapport en CSV [XIR2]
    Par BipBipBO dans le forum SDK
    Réponses: 1
    Dernier message: 11/06/2010, 15h44
  3. Requete pour trouver des trous dans une suite
    Par Ben_Le_Cool dans le forum Langage SQL
    Réponses: 11
    Dernier message: 28/08/2009, 18h17
  4. Requete pour suppression de propagation dans liste chainée
    Par chris92 dans le forum Développement
    Réponses: 8
    Dernier message: 27/05/2009, 15h30
  5. Requete pour compter les points dans un championnat
    Par IG2da dans le forum Langage SQL
    Réponses: 3
    Dernier message: 28/10/2006, 17h58

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