2009-08-31 8 views
1

Quel est le script php pour convertir une table mysql en fichier texte? Je l'ai converti en format CSV qui s'ouvre comme un fichier Excel. Je veux aussi les données de la table dans un fichier texte. Comment fait-on ça?comment convertir une table mysql en fichier texte en php?

Pour convertir au format csv, je les données d'en-tête comme:

$filename = "export_".date("Y-m-d_H-i",time()); 
header("Content-type: application/vnd.ms-excel"); 
header("Content-disposition: csv" . date("Y-m-d") . ".csv"); 
header("Content-disposition: filename=".$filename.".csv"); 

J'ai essayé d'utiliser header ("Content-Type: text/plain"); et utilisé l'extension .txt. Ça n'a pas marché .. Quelqu'un me guide s'il te plait.

Répondre

-1

J'ai trouvé un moyen de sauvegarder ma table au format texte, enregistré en tant qu'application ms avec l'extension .doc. Et les en-têtes sont donnés ci-dessous

header("Content-Type: application/msword"); 
header("Content-disposition: attachment" . date("Y-m-d") . ".doc"); 
header("Content-disposition: filename=".$filename.".doc"); 

Mais maintenant, je suis en train de l'afficher dans un format de table dans le fichier texte .. Parce qu'il ressemble à des données indésirables sans alignement. Ajouter un espace de tabulation n'aide pas .. Des suggestions?

+0

Vous avez répondu à votre question avec une question et avez ensuite choisi cette "réponse" comme réponse acceptée? – Benjam

1

mysqldump va créer le fichier au format CSV pour vous:

mysqldump -u User1 -p -t -T/path/to/sav [database] --fields-enclosed-by=\" --fields-terminated-by=, --lines-terminated-by=\r\n --no-create-db --no-create-info 

--fields-enclosed-by=\" assure que tous vos champs sont encapsulées par des citations et --fields-terminated-by=, fait ces champs séparés par des virgules.

1

Qu'en est celui-ci - SQL (cvs)

SELECT   * 
FROM   TABLE1 
INTO   OUTFILE 'path\file.cvs' 
       FIELDS TERMINATED BY '\,' 
       OPTIONALLY ENCLOSED BY '\"' 
       LINES TERMINATED BY '\n' 

Si vous voulez le texte brut -

SELECT   * 
FROM   TABLE1 
INTO   OUTFILE 'path\file.sql' 

mysql doc

Le SELECT ... INTO OUTFILE « nom_fichier La forme de SELECT écrit les lignes sélectionnées dans un fichier. Le fichier est créé sur l'hôte du serveur, donc vous devez avoir le privilège FICHIER pour utiliser cette syntaxe. nom_fichier ne peut pas être un fichier existant , qui, entre autres choses empêche la destruction de fichiers tels que /etc/passwd et les tables de base de données de . À partir de MySQL 5.0.19, la variable système character_set_filesystem système contrôle l'interprétation du nom de fichier.

+0

J'ai même essayé, le fichier n'est pas enregistré. – Angeline

+0

Avez-vous des autorisations d'écriture pour la destination? –

+0

oui, j'ai .. – Angeline

1

Un fichier .csv est un fichier texte, vous êtes juste d'envoyer les en-têtes qui provoquent son ouverture dans Excel.

Si vous voulez que le fichier même format, mais pas ouvert dans Excel, juste ne pas envoyer ces en-têtes:

header("Content-type: application/vnd.ms-excel"); 
header("Content-disposition: csv" . date("Y-m-d") . ".csv"); 
header("Content-disposition: filename=".$filename.".csv"); 

Et au lieu envoyer celui-ci:

header('Content-Type: text/plain'); 

Si vous voulez pour forcer le téléchargement du fichier texte, essayez ceci:

header('Content-Type: application/force-download'); 
+0

Si je le fais, le contenu est affiché dans le navigateur .. Il n'est pas enregistré en tant que fichier texte .. – Angeline

+0

Mis à jour avec un exemple qui devrait forcer un téléchargement de fichier texte. –

Questions connexes