Extraire des données mysql vers des fichiers texte
Fermé
dgdev
-
21 mai 2014 à 09:29
-helper- Messages postés 89 Date d'inscription mercredi 21 mai 2014 Statut Membre Dernière intervention 15 juin 2014 - 25 mai 2014 à 15:18
-helper- Messages postés 89 Date d'inscription mercredi 21 mai 2014 Statut Membre Dernière intervention 15 juin 2014 - 25 mai 2014 à 15:18
A voir également:
- Extraire des données mysql vers des fichiers texte
- Extraire une video youtube - Guide
- Renommer des fichiers en masse - Guide
- Extraire son video - Guide
- Excel cellule couleur si condition texte - Guide
- Extraire fichier rar - Guide
2 réponses
loupix57
Messages postés
316
Date d'inscription
mercredi 20 mars 2013
Statut
Membre
Dernière intervention
1 juin 2015
14
25 mai 2014 à 14:30
25 mai 2014 à 14:30
ok, j'aurais tendance à dire cela :
$i=0; $j=0; $fichier = "mon_fichier"; $rep = mysql_query("ta_requete"); while($data=mysql_fetch_assoc($rep)){ $mon_fichier = $fichier.$j.".txt"; $hand = fopen($mon_fichier,"a+"); foreach($data as $k=>$v){ fwrite($hand, $k."\t".$v);} fclose($hand); $i++; if($i>=1000){$i=0;$j++;} }
-helper-
Messages postés
89
Date d'inscription
mercredi 21 mai 2014
Statut
Membre
Dernière intervention
15 juin 2014
27
Modifié par -helper- le 25/05/2014 à 15:22
Modifié par -helper- le 25/05/2014 à 15:22
Re,
Maintenant ca ressemble plus à un exercice d'algo... dans ce cas, on peut se passer du mot clef "LIMIT"...
Voici ce qui me semble être la proposition la plus lisible et plus performante (non testée, mais sur le principe tu trouveras à mon avis pas mieux...) :
Alors j'ai une bonne note !?
S@M
Maintenant ca ressemble plus à un exercice d'algo... dans ce cas, on peut se passer du mot clef "LIMIT"...
Voici ce qui me semble être la proposition la plus lisible et plus performante (non testée, mais sur le principe tu trouveras à mon avis pas mieux...) :
// Init... $sDirPath = dirname( __FILE__ ); // Tant qu'on a des enregistrements... $rep = mysql_query( "SELECT field1, field2 FROM Matable ORDER BY field1 ASC" ); $iFiles = 0; while( ($aRow = mysql_fetch_assoc($rep)) !== false ){ // Ouvre un nouveau fichier $sFilePath = $sDirPath . DIRECTORY_SEPARATOR . 'mon_fichier' . $iFiles . 'txt'; if( ($hF = fopen( $sFilePath, 'a+' )) !== false ) { // Tant qu(on a des enregistrements en base et qu'on a pas dépassé le nombre autorisé par fichier... $iRows = 0; while( ($aRow = mysql_fetch_assoc($rep)) !== false && $iRows < 1000 ) { fwrite( $hF, implode( '|', array_values( $aRow ) ) . PHP_EOL ); $iRows++; } fclose( $hF ); } else { throw new Exception( "Impossible d'écrire dans le fichier $sFilePath !" ); } $iFiles++; }
Alors j'ai une bonne note !?
S@M
-helper-
Messages postés
89
Date d'inscription
mercredi 21 mai 2014
Statut
Membre
Dernière intervention
15 juin 2014
27
Modifié par -helper- le 25/05/2014 à 15:43
Modifié par -helper- le 25/05/2014 à 15:43
A noter que si c'est pas un exercice d'algo... je choisirais plus le format CSV que TXT pour enregistrer les données... Car apres tu peux ouvrir les fichiers avec un tableur style EXCEL, OpenOffice, ... Voir meme l'utiliser pour ré-injecter des données vers une autre base de données !
Modifié par -helper- le 25/05/2014 à 15:42
Si c'est le cas... On va ouvrir/fermer 90000 fois les fichiers.... c'est loin d'etre optimal comme algo...
Si c'est Mysql ton SGBD, il y a moyen de faire de la pagination avec le mot clef LIMIT...