Précédent   Forum des professionnels en informatique > Bases de données > MySQL > Requêtes
Requêtes Forum d'entraide sur les requêtes MySQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 25/11/2010, 17h32   #1
Invité de passage
 
Inscription : février 2009
Messages : 17
Détails du profil
Informations forums :
Inscription : février 2009
Messages : 17
Points : 3
Points : 3
Par défaut LOAD DATA INFILE spécifier des colonnes

Bonjour,

J'ai un fichier csv de la forme suivante:
Code :
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 :
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
thenano est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/11/2010, 17h47   #2
Rédacteur/Modérateur

 
Avatar de SQLpro
 
Homme Frédéric BROUARD
Expert SGBDR & SQL
Inscription : mai 2002
Messages : 10 937
Détails du profil
Informations personnelles :
Nom : Homme Frédéric BROUARD
Localisation : France

Informations professionnelles :
Activité : Expert SGBDR & SQL
Secteur : Conseil

Informations forums :
Inscription : mai 2002
Messages : 10 937
Points : 17 745
Points : 17 745
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
Site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
Blog SQL, SQL Server, modélisation données : http://blog.developpez.com/sqlpro
http://www.sqlspot.com : modélisation, conseils, audit, optimisation, formation
* * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * *
SQLpro est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 25/11/2010, 17h55   #3
Membre Expert
 
Avatar de Madfrix
 
Inscription : juin 2007
Messages : 2 278
Détails du profil
Informations personnelles :
Localisation : France, Gironde (Aquitaine)

Informations forums :
Inscription : juin 2007
Messages : 2 278
Points : 2 324
Points : 2 324
Pas de pub !

Sinon, méthode bourrine : une petite modif du fichier via php et insertion ensuite ?
Madfrix est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/11/2010, 18h06   #4
Invité de passage
 
Inscription : février 2009
Messages : 17
Détails du profil
Informations forums :
Inscription : février 2009
Messages : 17
Points : 3
Points : 3
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...
thenano est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/11/2010, 18h21   #5
Membre Expert
 
Avatar de Madfrix
 
Inscription : juin 2007
Messages : 2 278
Détails du profil
Informations personnelles :
Localisation : France, Gironde (Aquitaine)

Informations forums :
Inscription : juin 2007
Messages : 2 278
Points : 2 324
Points : 2 324
Citation:
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:
Citation:
LOAD DATA INFILE 'persondata.txt' INTO TABLE persondata (col1,col2,...);
Madfrix est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/11/2010, 13h04   #6
Invité de passage
 
Inscription : février 2009
Messages : 17
Détails du profil
Informations forums :
Inscription : février 2009
Messages : 17
Points : 3
Points : 3
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
thenano est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/11/2010, 13h10   #7
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 10 957
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur d'études en informatique
Secteur : Enseignement

Informations forums :
Inscription : août 2006
Messages : 10 957
Points : 18 163
Points : 18 163
Envoyer un message via MSN à CinePhil
Tu crées une table temporaire dans laquelle tu importes ton fichier CSV en entier par LOAD DATA INFILE puis tu fais une requête INSERT SELECT pour alimenter la vraie table à partir de la table temporaire.
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 19h29.


 
 
 
 
Partenaires

Hébergement Web