import de fichier csv dans une base sql

M-Christine
Invité n'ayant pas de compte PHPfrance

28 oct. 2006, 18:40

Bonjour,

je débute en php et tatonne beaucoup.
J'essaie d'importe un fichier excel, enregistré en .csv dans une base existante.

J'ai le message "successfully imported", mais je ne retrouve pas les éléments de la base, seulement les précédents qui me servaient de test. En fait rien n'a changé.

Ou est mon erreur?

Merci

Mammouth du PHP | 19672 Messages

28 oct. 2006, 19:45

Sans voir ni code d'importation utilisé ni extrait du fichier à titre d'illustration, il va être difficile de te répondre :-k
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

M-Christine
Invité n'ayant pas de compte PHPfrance

28 oct. 2006, 23:28

Je n'ai pas la moindre idée où trouver le code d'importation

Tout ce que j'ai fait est de cliquer sur "import" dans phpmyAdmin, j'ai choisi le fichier. J'ai eu le message

"Import has been successfully finished."

Quant au fichier c'est un fichier excel enregistré en csv, dont les colonnes correspondent aux champs de ma base.

... :(

ViPHP
ViPHP | 2144 Messages

28 oct. 2006, 23:35

Montres nous le fichier csv alors, ou une partie si il est trè volumineux parce que là, on ne peut ne point deviner ce qui peut clocher.

M-Christine
Invité n'ayant pas de compte PHPfrance

29 oct. 2006, 00:02

Mes champs sont
id
nom
adresse
arrondissement
texte


le fichier csv commence comme ca (il est assez important, plus de 600 lignes)

Code : Tout sélectionner

1 Hôtel de Saint-Aignan 71, rue du Temple 3 Construit par l’architecte Pierre Le Muet, de 1645 à 1650, pour Claude de Mesmes, comte d’Avaux, négociateur de la paix de Westphalie et surintendant des finances, il fut agrandi en 1691 pour Paul de Beauvillier, le gouverneur des trois petits-fils de Louis XIV, gendre de Colbert. La façade sur cour est structurée par un ensemble de pilastres colossaux d’ordre corinthien encadrant de grandes baies, et le côté gauche habille de fausses fenêtres l’ancien rempart de Philipe-Auguste. Michel-Etienne Turgot, prévôt des marchands et son fils Anne, futur ministre de Louis XVI, y habitèrent. Très défiguré à la Révolution, il fut transformé en mairie d’arrondissement de 1795 à 1823. 2 Saint-Denis-du-Saint-Sacrement 3 3 Hôtel le Peletier de Saint-Fargeau 3 4 Hôtel Carnavalet 3

ViPHP
ViPHP | 2144 Messages

29 oct. 2006, 00:10

D'après ce qu'on peut en voir, ton fichier n'a pas l'air d'être iun csv valide. Tu as des espaces comme séparateurs, et d'autres espaces qui visiblement ne sont pas censés l'être. Il faudrait que tu vois du côté de l'exportation en csv pour obtenir quelques chose de correct.

M-Christine
Invité n'ayant pas de compte PHPfrance

29 oct. 2006, 00:24

Ok merci je vais essayer dans ce sens, tout ce que j'ai fait dans excel est d'enregistrer au format csv, mais eut-être en copiant les cellules pour donner un exemple, cela ne donne pas le bon résultat ?

Je vais quand même aller dans ce sens, cela semble logique

Merci encore

mamimolo
Invité n'ayant pas de compte PHPfrance

29 oct. 2006, 00:38

salut m-christine, je peux te donner la méthode que j'utilise pour importer des données dans une base à partir du csv.
bien faire correspondre les champs du excel avec la base puis enregistrer sous CSV avec separateurs point virgule. Aller chercher le fichier, changer l'extension .csv vers .txt puis aller sous phpmyadmin et en bas faire "importer des données à partir d'un fichier texte " et ca rrrroule !

easy going !!

Mammouth du PHP | 19672 Messages

29 oct. 2006, 08:45

... Tu as des espaces comme séparateurs...
J'ai édité son message pour mettre l'exemple entre balises [code] : le séparateur est bien une tabulation et les lignes sont séparées par un retour de chariot. Utiliser un ";" comme séparateur de champ risque de poser des problèmes si jamais dans la description (dernière colonne) le texte contient lui-même des ";".

Peut-être bien qu'en exécutant la même chose par requête SQL ça fonctionnerait mieux. J'ai fait le test suivant qui a correctement fonctionné :

Code : Tout sélectionner

LOAD DATA LOCAL INFILE 'C:/Temp/hotels.csv' INTO TABLE `hotels` FIELDS TERMINATED BY '\t' LINES TERMINATED BY '\n';
Il suffirait d'adapter pour le faire sur le serveur distant en ayant au préalable uploadé le fichier par FTP.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe: