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 :

LOAD DATA INFILE spécifier des colonnes


Sujet :

Requêtes MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité
    Invité(e)
    Par défaut LOAD DATA INFILE spécifier des colonnes
    Bonjour,

    J'ai un fichier csv de la forme suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    numéro;mise en service;modèle;fonctionne
    0;2010-01-01T09:00:00;JCDECAUX2010;True
    1;2010-01-01T09:00:00;JCDECAUX2010;True
    2;2010-01-01T09:00:00;JCDECAUX2010;True
    ...
    Je dois l'inclure dans une table "velo" dont les attributs ne sont pas forcément dans le même ordre et comprenant moins de champs que le csv.

    J'ai donc naturellement voulu me servir de la fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    LOAD DATA INFILE 'velos.csv' INTO TABLE velo
    FIELDS TERMINATED BY ';' IGNORE 1 LINES
    Comment doit-on faire pour 'sauter' une colonne du csv qui ne sera pas incluse dans la table??

    Merci d'avance

  2. #2
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    22 002
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 22 002
    Billets dans le blog
    6
    Par défaut
    C'est dommage d'utiliser MySQL pour cela puisque avec SQL Server cela ce ferait via un fichier de format :
    http://msdn.microsoft.com/fr-fr/library/ms178129.aspx

    C'est d'autant plus dommage que le système VLIB de JC Decaux est sous base MS SQL Server !!!!!

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  3. #3
    Membre Expert Avatar de Madfrix
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 326
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 326
    Par défaut
    Pas de pub !

    Sinon, méthode bourrine : une petite modif du fichier via php et insertion ensuite ?

  4. #4
    Invité
    Invité(e)
    Par défaut
    merci pour vos réponses rapides.
    C'est un exercice pour le cours de BDD à l'université
    On doit recréer la base utilisée par les "villos" bruxellois.
    Je me doute bien que jcdecaux n'utilise pas MySql mais là c'est ce qui nous est imposé.
    Je voulais trouver une commande qui me le fasse d'un coup, pour ne pas avoir à modifier le csv. Au pire je le ferai à l'ancienne...

  5. #5
    Membre Expert Avatar de Madfrix
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 326
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 326
    Par défaut
    By default, when no column list is provided at the end of the LOAD DATA INFILE statement, input lines are expected to contain a field for each table column. If you want to load only some of a table's columns, specify a column list:
    LOAD DATA INFILE 'persondata.txt' INTO TABLE persondata (col1,col2,...);

  6. #6
    Invité
    Invité(e)
    Par défaut
    En fait, j'avais déjà trouvé cette solution.
    Cela fonctionne lorsque je veux remplir certains champs d'une table avec les champs dans l'ordre d'un csv.
    Mainetenant comment faire si je veux remplir les champs d'une table avec certains champs d'un csv?
    En fait je suppose qu'on ne peut pas car la liste des colonnes est dans l'ordre des champs du csv. La seule solution serait peutetre de mettre les champs inutilisés dans des variables utilisateurs dont on ne se servira pas.
    Cette solution est disponible seulement depuis la version 5.1

Discussions similaires

  1. LOAD DATA INFILE, trop de colonnes en entrée
    Par SWOTR dans le forum SQL Procédural
    Réponses: 3
    Dernier message: 03/11/2006, 15h57
  2. Réponses: 5
    Dernier message: 18/04/2005, 12h38
  3. probleme avec "LOAD DATA INFILE" et les b
    Par Koo dans le forum Requêtes
    Réponses: 2
    Dernier message: 01/07/2004, 09h37
  4. Problème avec LOAD DATA INFILE
    Par ka0z dans le forum SQL Procédural
    Réponses: 3
    Dernier message: 04/06/2004, 14h59
  5. petit soucis lors d'un LOAD DATA INFILE
    Par Jovial dans le forum SQL Procédural
    Réponses: 9
    Dernier message: 04/06/2004, 11h58

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