Forum Programmation.autre Petite question MySQL

Posté par  (site web personnel) .
Étiquettes : aucune
0
21
avr.
2005
Bonjour à tous!
Une petite question concernant une petite bricole à faire en SQL.
J'ai un VARCHAR(8) correspondant à une date AAAAMMJJ provenant d'un fichier CSV un peu crade que je voudrais éclater en trois champs pour pouvoir bosser tranquillement (non mais ho).
Donc ma question est : comment renvoyer n caractères arbitraires de mon VARCHAR pour les réinserer à la volée voire les convertir en DATE.
  • # http://dev.mysql.com

    Posté par  . Évalué à 1.

    Consultes la doc mysql en ligne : http://dev.mysql.com/doc/mysql/fr/string-functions.html.(...) Tu devrais y trouver ton bonheur pour pouvoir faire un truc du genre:

    INSERT INTO table_dest (jour, mois, annee)
    SELECT substring(mon_champs_date, 4, 4), substring(mon_champs_date, 2, 2), substring(mon_champs_date, 0, 2)
    FROM table_source


    Tu peux aussi utiliser CONCAT() pour reconstituer une date au format ISO avant d'insérer ça dans un champs de type DATE.

    Bonne continuation :-)
  • # insertion direct

    Posté par  (site web personnel) . Évalué à 3.

    Si j'ai bien compris, tu possèdes un fichier CSV contenant des dates. Donc un truc du genre :
    20050412 ;
    20050413 ;
    20050414 ;
    20050416 ;
    ...
    
    Et tu veux les insérer dans une base MySQL. Le plus simple est de remplir la table à partir du fichier à l'aide de LOAD DATA INFILE. Commence par créer la table avec un champ au format DATE create table test ( madate DATE ) ; Ensuite tu peux charger le fichier : LOAD DATA INFILE 'tonfichier.csv' INTO TABLE test LINES TERMINATED BY ';' Si tes lignes se terminent par un retour chariot, tu mets LINES TERMINATED BY '\n' ( ça tu adaptes...) Cette technique fonctionne aussi si ton fichier CSV possède plusieurs champs. Dans ce cas, tu dois ajouter FIELDS TERMINATED BY.
  • # merci

    Posté par  (site web personnel) . Évalué à 0.

    .

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.