Bonjour,
Désolé de poser une question dont le sujet est MySql, mais je n'ai pas
trouvé de groupe adéquat... et je veux faire ça en PHP.
je dois exporter une table ayant la structure suivante (par exemple) :
id int(5),
nom char(20),
prenom char(15),
code char(3)
vers un fichier au format ASCII non délimité, ayant la meme structure
que la table.
Résultat attendu :
00041NOM PRENOM A15[Retour chariot, ligne
suivante]
< 5 ><--------20-------><-------15----><3>
Le résultat doit être lu par un programme COBOL sur un Mainframe.
Sexy, non ?
Quelle requete envoyer au serveur pour obtenir ce résultat ?
Merci pour votre aide...
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
CrazyCat
Eric BILLARD wrote:
id int(5), nom char(20), prenom char(15), code char(3) vers un fichier au format ASCII non délimité, ayant la meme structure que la table. Résultat attendu : 00041NOM PRENOM A15[Retour chariot, ligne suivante] < 5 ><--------20-------><-------15----><3>
Code simpliste mais qui permet de bien voir le fonctionnement de la chose, je n'ai pas cherché à savoir s'il y avait mieux :)
-- Tout sur les eggdrops http://www.c-p-f.org ML @
Eric BILLARD wrote:
id int(5),
nom char(20),
prenom char(15),
code char(3)
vers un fichier au format ASCII non délimité, ayant la meme structure
que la table.
Résultat attendu :
00041NOM PRENOM A15[Retour chariot, ligne
suivante]
< 5 ><--------20-------><-------15----><3>
id int(5), nom char(20), prenom char(15), code char(3) vers un fichier au format ASCII non délimité, ayant la meme structure que la table. Résultat attendu : 00041NOM PRENOM A15[Retour chariot, ligne suivante] < 5 ><--------20-------><-------15----><3>
Code simpliste mais qui permet de bien voir le fonctionnement de la chose, je n'ai pas cherché à savoir s'il y avait mieux :)
-- Tout sur les eggdrops http://www.c-p-f.org ML @
Stephane Pineau
Le 28 Sep 2004 15:01:28 GMT, CrazyCat écrivait:
$d_id = 5 - strlen($id); for ($i=0;$i<$d_id;$i++) { $id = "0".$id; } $d_nom = 20 - strlen($nom); for ($i=0;$i<$d_nom;$i++) { $nom .= " "; } $d_prenom = 15 - strlen($prenom); for ($i=0;$i<$d_prenom;$i++) { $prenom .= " "; } $ascii .= $id.$nom.$prenom."n"; Code simpliste mais qui permet de bien voir le fonctionnement de la chose, je n'ai pas cherché à savoir s'il y avait mieux :)
Ben en tout cas c'est l'occasion de faire découvrir ou redécouvrir une fonction native toute bête : str_pad. Ton bout de code devient :
$d_id=str_pad($d_id,5,"0",STR_PAD_LEFT); $d_nom=str_pad($d_nom,20); // padding par défaut à droite avec des espaces etc;...
La fonction permet de faire du padding avec un caractère ou avec une suite de caractères, à gauche, à droite, ou des deux côtés à la fois....
Voilà y a plein de petites perles comme ca dans la liste des fonctions "chaines de caractères", une section à relire régulièrement:-)
Le 28 Sep 2004 15:01:28 GMT, CrazyCat <crazycat@nospam.org> écrivait:
$d_id = 5 - strlen($id);
for ($i=0;$i<$d_id;$i++) { $id = "0".$id; }
$d_nom = 20 - strlen($nom);
for ($i=0;$i<$d_nom;$i++) { $nom .= " "; }
$d_prenom = 15 - strlen($prenom);
for ($i=0;$i<$d_prenom;$i++) { $prenom .= " "; }
$ascii .= $id.$nom.$prenom."n";
Code simpliste mais qui permet de bien voir le fonctionnement de la
chose, je n'ai pas cherché à savoir s'il y avait mieux :)
Ben en tout cas c'est l'occasion de faire découvrir ou redécouvrir une
fonction native toute bête : str_pad. Ton bout de code devient :
$d_id=str_pad($d_id,5,"0",STR_PAD_LEFT);
$d_nom=str_pad($d_nom,20); // padding par défaut à droite avec des espaces
etc;...
La fonction permet de faire du padding avec un caractère ou avec une suite
de caractères, à gauche, à droite, ou des deux côtés à la fois....
Voilà y a plein de petites perles comme ca dans la liste des fonctions
"chaines de caractères", une section à relire régulièrement:-)
$d_id = 5 - strlen($id); for ($i=0;$i<$d_id;$i++) { $id = "0".$id; } $d_nom = 20 - strlen($nom); for ($i=0;$i<$d_nom;$i++) { $nom .= " "; } $d_prenom = 15 - strlen($prenom); for ($i=0;$i<$d_prenom;$i++) { $prenom .= " "; } $ascii .= $id.$nom.$prenom."n"; Code simpliste mais qui permet de bien voir le fonctionnement de la chose, je n'ai pas cherché à savoir s'il y avait mieux :)
Ben en tout cas c'est l'occasion de faire découvrir ou redécouvrir une fonction native toute bête : str_pad. Ton bout de code devient :
$d_id=str_pad($d_id,5,"0",STR_PAD_LEFT); $d_nom=str_pad($d_nom,20); // padding par défaut à droite avec des espaces etc;...
La fonction permet de faire du padding avec un caractère ou avec une suite de caractères, à gauche, à droite, ou des deux côtés à la fois....
Voilà y a plein de petites perles comme ca dans la liste des fonctions "chaines de caractères", une section à relire régulièrement:-)
} ... je n'ai pas cherché à savoir s'il y avait mieux :)
Un peu plus court, et donc simple et moins sujet à erreur.
-- Benoit F.
Paul Delannoy
CrazyCat a écrit:
Eric BILLARD wrote:
id int(5), nom char(20), prenom char(15), code char(3) vers un fichier au format ASCII non délimité, ayant la meme structure que la table. Résultat attendu : 00041NOM PRENOM A15[Retour chariot, ligne suivante] < 5 ><--------20-------><-------15----><3>
Code simpliste mais qui permet de bien voir le fonctionnement de la chose, je n'ai pas cherché à savoir s'il y avait mieux :) Ben c'est pas mal du tou, à mes yeux. Juste vérifier qu'il n'y a pas un
car bidon devant les nbs, ou des coquineries du genre...
CrazyCat a écrit:
Eric BILLARD wrote:
id int(5), nom char(20), prenom char(15), code char(3)
vers un fichier au format ASCII non délimité, ayant la meme structure
que la table.
Résultat attendu :
00041NOM PRENOM A15[Retour chariot, ligne
suivante]
< 5 ><--------20-------><-------15----><3>
Code simpliste mais qui permet de bien voir le fonctionnement de la
chose, je n'ai pas cherché à savoir s'il y avait mieux :)
Ben c'est pas mal du tou, à mes yeux. Juste vérifier qu'il n'y a pas un
car bidon devant les nbs, ou des coquineries du genre...
id int(5), nom char(20), prenom char(15), code char(3) vers un fichier au format ASCII non délimité, ayant la meme structure que la table. Résultat attendu : 00041NOM PRENOM A15[Retour chariot, ligne suivante] < 5 ><--------20-------><-------15----><3>
Code simpliste mais qui permet de bien voir le fonctionnement de la chose, je n'ai pas cherché à savoir s'il y avait mieux :) Ben c'est pas mal du tou, à mes yeux. Juste vérifier qu'il n'y a pas un
car bidon devant les nbs, ou des coquineries du genre...
CrazyCat
Stephane Pineau wrote:
Le 28 Sep 2004 15:01:28 GMT, CrazyCat écrivait: [snip de mes bétises pas si stupides]
Ben en tout cas c'est l'occasion de faire découvrir ou redécouvrir une fonction native toute bête : str_pad. Ton bout de code devient : $d_id=str_pad($d_id,5,"0",STR_PAD_LEFT); $d_nom=str_pad($d_nom,20); // padding par défaut à droite avec des espaces etc;... [Snip des explications que je garde au chaud]
Merci bien Stéphane et Benoit, comme quoi il y a des fois des RTFM qui se perdent. En fait, je travaille (professionnellement) en ASP et j'ai toujours du mal à me souvenir que PHP est bien mieux équipé en fonctions natives.
En v'la encore un qui se couchera moins idiot :)
-- Tout sur les eggdrops http://www.c-p-f.org ML @
Stephane Pineau wrote:
Le 28 Sep 2004 15:01:28 GMT, CrazyCat <crazycat@nospam.org> écrivait:
[snip de mes bétises pas si stupides]
Ben en tout cas c'est l'occasion de faire découvrir ou redécouvrir une
fonction native toute bête : str_pad. Ton bout de code devient :
$d_id=str_pad($d_id,5,"0",STR_PAD_LEFT);
$d_nom=str_pad($d_nom,20); // padding par défaut à droite avec des espaces
etc;...
[Snip des explications que je garde au chaud]
Merci bien Stéphane et Benoit, comme quoi il y a des fois des RTFM qui
se perdent.
En fait, je travaille (professionnellement) en ASP et j'ai toujours du
mal à me souvenir que PHP est bien mieux équipé en fonctions natives.
En v'la encore un qui se couchera moins idiot :)
--
Tout sur les eggdrops
http://www.c-p-f.org
ML @ eggdrop_fr@yahoogroupes.fr
Le 28 Sep 2004 15:01:28 GMT, CrazyCat écrivait: [snip de mes bétises pas si stupides]
Ben en tout cas c'est l'occasion de faire découvrir ou redécouvrir une fonction native toute bête : str_pad. Ton bout de code devient : $d_id=str_pad($d_id,5,"0",STR_PAD_LEFT); $d_nom=str_pad($d_nom,20); // padding par défaut à droite avec des espaces etc;... [Snip des explications que je garde au chaud]
Merci bien Stéphane et Benoit, comme quoi il y a des fois des RTFM qui se perdent. En fait, je travaille (professionnellement) en ASP et j'ai toujours du mal à me souvenir que PHP est bien mieux équipé en fonctions natives.
En v'la encore un qui se couchera moins idiot :)
-- Tout sur les eggdrops http://www.c-p-f.org ML @
CrazyCat
Solution alternative trouvée sur google (en anglais):
Exporting data from MySQL for the most part is very easy, but doing so in fixed width requires alittle more work. This will show you a basic example of how to export data from MySQL into fixed-width format.
Basically you want to select all the field names, and length's of those fields. To cheat I usually look at the table creation statement and use the maxlength for the pad values. Here is the basic example:
Basically all your doing is using the rpad function to add spaces (the third value) to fill up the blank space and make it into fixed width. Beyond that the "into outfile" is where you want the data to be save, and remember this is on the server your connection to, not the client.
-- Tout sur les eggdrops http://www.c-p-f.org ML @
Solution alternative trouvée sur google (en anglais):
Exporting data from MySQL for the most part is very easy, but doing so
in fixed width requires alittle more work. This will show you a basic
example of how to export data from MySQL into fixed-width format.
Basically you want to select all the field names, and length's of those
fields. To cheat I usually look at the table creation statement and use
the maxlength for the pad values. Here is the basic example:
Basically all your doing is using the rpad function to add spaces (the
third value) to fill up the blank space and make it into fixed width.
Beyond that the "into outfile" is where you want the data to be save,
and remember this is on the server your connection to, not the client.
--
Tout sur les eggdrops
http://www.c-p-f.org
ML @ eggdrop_fr@yahoogroupes.fr
Solution alternative trouvée sur google (en anglais):
Exporting data from MySQL for the most part is very easy, but doing so in fixed width requires alittle more work. This will show you a basic example of how to export data from MySQL into fixed-width format.
Basically you want to select all the field names, and length's of those fields. To cheat I usually look at the table creation statement and use the maxlength for the pad values. Here is the basic example:
Basically all your doing is using the rpad function to add spaces (the third value) to fill up the blank space and make it into fixed width. Beyond that the "into outfile" is where you want the data to be save, and remember this is on the server your connection to, not the client.
-- Tout sur les eggdrops http://www.c-p-f.org ML @
billard.eric
Eh bien, déjà : je vous remercie de m'avoir répondu. Et je cours essayer tout ça ! Comme je poste depuis Google, la réponse .... pas tout de suite. Merci encore EB
Eh bien, déjà : je vous remercie de m'avoir répondu. Et je cours
essayer tout ça ! Comme je poste depuis Google, la réponse .... pas
tout de suite.
Merci encore
EB
Eh bien, déjà : je vous remercie de m'avoir répondu. Et je cours essayer tout ça ! Comme je poste depuis Google, la réponse .... pas tout de suite. Merci encore EB