Précédent   Forum des professionnels en informatique > Bases de données > MySQL > SQL Procédural
SQL Procédural Forum d'entraide sur les triggers, les procédures stockées et les fonctions en 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 02/01/2008, 12h45   #1
Candidat au titre de Membre du Club
 
Inscription : novembre 2003
Messages : 27
Détails du profil
Informations forums :
Inscription : novembre 2003
Messages : 27
Points : 10
Points : 10
Par défaut Import txt longeur fixe

Bonjour,

j'aurais besoin d'importer un fichier txt, mais le pb c'est que celui ci est de longueur fixe ...
je ne vois pas trop comment faire ... j'ai lu la doc sur la fonction LOAD DATA mais apparemment ca n'a pas l'air de le faire ...

est ce possible directement en SQL ou faut il utiliser une petite moulinette pour creer un délimiteur avant ?
si oui existe t'il des moulinette toute faite qui font ca (autant ne pas réinventer la roue ...) ?


merci
lololoic est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/01/2008, 20h41   #2
Membre éclairé
 
Inscription : février 2005
Messages : 349
Détails du profil
Informations personnelles :
Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

Informations forums :
Inscription : février 2005
Messages : 349
Points : 358
Points : 358
salut
bonne année 2008 a toi.


Je comprends pas ce qui te gène dans la commande load data. Tu n'a pas d'accés aux serveurs autre que par mysql?

Sinon je ne connais pas de moulinettes toutes pretes pour faire ceci. Un script personalisé fera l'affaire mais tu perdra du temps par rapport au load data.


Cordialement.
__________________
La connaissance s'accroit lorsqu'on la partage.
overider est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/01/2008, 21h19   #3
ced
Rédacteur/Modérateur

 
Avatar de ced
 
Homme Cédric Duprez
Inscription : avril 2002
Messages : 3 823
Détails du profil
Informations personnelles :
Nom : Homme Cédric Duprez
Âge : 36
Localisation : France, Loiret (Centre)

Informations professionnelles :
Secteur : Agroalimentaire - Agriculture

Informations forums :
Inscription : avril 2002
Messages : 3 823
Points : 6 409
Points : 6 409
Bonjour,
C'est possible, mais pour que ça marche, il faut que la description des colonnes de la table cible corresponde, en longueur de caractère, à la longueur fixe de chacun des champs.
Ainsi, il faut avoir déclaré les colonnes int(6), char(12)... pour un fichier avec 6 caractères sur le premier champ, 12 sur le second...
Voici ce que dit la documentation MySQL à ce propos :
Citation:
Si les valeurs FIELDS TERMINATED BY et FIELDS ENCLOSED BY sont vides toutes les deux (''), un format à taille de champ fixe est utilisé. Avec ce format, aucun délimiteur n'est utilisé entre les champs. Au lieu de cela, les valeurs des colonnes sont écrites avec leur configuration d'affichage. Par exemple, si une colonne a été déclarée INT(7), la valeur de cette colonne sera écrite avec 7 caractères. Lors de la relecture, la valeur de la colonne sera obtenue en lisant à nouveau 7 caractères. Ce format à taille fixe affecte la gestion de la valeur NULL; voyez plus loin pour cela. Notez que ce format ne fonctionne pas avec les jeux de caractères multi-octets.
Et voilà le lien vers la documentation.

ced
ced est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/01/2008, 09h29   #4
Candidat au titre de Membre du Club
 
Inscription : novembre 2003
Messages : 27
Détails du profil
Informations forums :
Inscription : novembre 2003
Messages : 27
Points : 10
Points : 10
ça a l'air d'être une bonne piste ...
je vais regarder de ce coté la
lololoic est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 13h37.


 
 
 
 
Partenaires

Hébergement Web