Page 1 sur 1

Création d'une nouvelle table dans DB correspondant aux colonnes du fichier csv uploadé

Posté : 13 avr. 2016, 15:41
par Tokipudi
Bonjour,

Je dois créer une application php d'analyse de logs, et pour ce faire il me faut pouvoir envoyer des fichiers csv et les stocker dans la DB. Chaque nouvel envoi doit effacer la table précédemment créée et la remplacer par une nouvelle. Ces fichiers n'étant pas tous formatés de la même façon, je ne peux pas créer une table que je pourrais remplir puis vider chaque fois que j'envoi un nouveau fichier, étant donné que les entêtes ne sont pas forcément les mêmes.

Je n'ai jamais travailler sur de l'upload de fichier, donc je ne sais vraiment pas si ce que je veux faire est possible ou non, et si c'est réellement possible, comment le faire.

J'ai trouvé ce lien http://coyotelab.org/php/upload-csv-and ... mysql.html qui peut m'aider pour l'upload de csv, mais pour le reste je ne sais pas du tout comment m'y prendre.

Merci de ne serait-ce qu'avoir lu ce post, que vous puissiez y répondre ou non :)

Re: Création d'une nouvelle table dans DB correspondant aux colonnes du fichier csv uploadé

Posté : 13 avr. 2016, 15:59
par or 1
le script fait bien ce qui est demandé.
reste la partie suppression et création d'une table en fonction des entêtes, ce qui est bien sur faisable. après, la manière de le faire dépendra de la variété des formats de fichiers, s'il faut optimiser le type des champs de la table ...

Re: Création d'une nouvelle table dans DB correspondant aux colonnes du fichier csv uploadé

Posté : 13 avr. 2016, 16:00
par Ryle
Bonjour,

Il faut découper le problème :
- l'upload du fichier : est-ce qu'il est uploadé à la main via un formulaire, récupéré par ftp... (
- la lecture du fichier : pour identifier le nombre de colonne à gérer
- la mise à jour de la structure de base de données
- la copie du fichier en base

Le script que tu as trouvé te permet de faire la majorité de ces points, mais considère que la structure de base est toujours la même. Dans ton cas, au lieu du TRUNCATE pour vider la table, il faut faire un DROP puis un CREATE TABLE. Ce dernier ne pourra être fait qu'après avoir lu la première ligne du fichier (avec un peu de chance ça sera une ligne d'entête) qui te permettra de déterminer le nombre (et éventuellement le nom) des colonnes de la nouvelle table.
Il ne reste plus ensuite qu'à faire comme dans le script, une boucle sur chaque ligne du fichier et faire un insert :)

Re: Création d'une nouvelle table dans DB correspondant aux colonnes du fichier csv uploadé

Posté : 13 avr. 2016, 16:15
par Tokipudi
Merci pour vos réponses. Je vais voir ce que je peux faire avec ce que vous m'avez dis :)