Importation csv vers table sql

Petit nouveau ! | 9 Messages

25 avr. 2008, 18:00

Bonjour à tous,

J'ai effectué quelques recherche concernant la manière d'importer une fichier csv pour une base sql.
Cependant, je me retrouver confronté à cette erreur récurrente :
Parse error: syntax error, unexpected T_STRING in C:\wamp\www\import\import.php on line 9
Je me dit que j'ai un soucis avec la ponctuation ou ma base.

Voici mon code :
<?php
//Connexion BDD
mysql_connect ("localhost","root"," ") or die (mysql_error()); 
mysql_select_db ("prod");

//Transfer du fichier *.csv vers la table
// définition du fichier  explorer

LOAD DATA INFILE ‘prod2008.csv’ 
INTO TABLE numerique
FIELDS
TERMINATED BY ';'
ENCLOSED BY '"'
ESCAPED BY '\\'
LINES
STARTING BY ''
TERMINATED BY '\n'
IGNORE 1 LINES
(of, client, q, type, largeur, longueur, m², prevue, support, machine, n, r, fin, operateur, observation);


//Déconnexion de MySQL
mysql_close();

?>
Pour information, j'utilise Wamp. J'ai crée une base 'prod' dans lequel j'ai une table 'numerique'.

Si vous avez un éclairage à m'apporter, il sera le bienvenue. Merci d'avance. :wink:

ViPHP
ViPHP | 2287 Messages

25 avr. 2008, 20:02

Bonjour,

L'explication est simple : tu colle ta requete SQL au milieu de ton code php en priant tres fort pour que ca marche... Ce qui ne risque pas d'arriver! Va voir du cote de mysql_query() :-)
if(!@work()){ Nespresso(); } else { what(); }
______________________________

Petit nouveau ! | 9 Messages

28 avr. 2008, 08:46

Merci pour ta réponse.

J'ai ajouté un query, (ce qui me semble logique après coup), mais j'ai l'erreur (ci après code php) qui me revient.
<?php
//Connexion BDD
mysql_connect ("localhost","root"," ") or die (mysql_error()); 
mysql_select_db ("prod");

//Transfer du fichier *.csv vers la table
// définition du fichier  explorer

$reponse = mysql_query (LOAD DATA INFILE ‘prod2008.csv’ 
INTO TABLE numerique
FIELDS
TERMINATED BY ';'
ENCLOSED BY '"'
ESCAPED BY '\\'
LINES
STARTING BY ''
TERMINATED BY '\n'
IGNORE 1 LINES
(of, client, q, type, largeur, longueur, m², prevue, support, machine, n, r, fin, operateur, observation) or die (mysql_error());

//Déconnexion de MySQL
mysql_close();

?> 
Parse error: syntax error, unexpected T_STRING in C:\Program Files\wamp\www\import\import.php on line 9
[Note : ce message a été posté de manière anonyme avant d'être réattribué à son auteur]

ViPHP
ViPHP | 5924 Messages

28 avr. 2008, 09:31

Lis les exemples de la doc : mysql_query()

Petit nouveau ! | 9 Messages

30 avr. 2008, 07:46

Bonjour à tous,

Après recherche acharné ici ou là, j'ai réussit à obtenir un script fonctionnel, mais pas complètement efficace.
<?php

//////////////////////////////////////////////
// Importation d'un fichier local .csv vers une base SQL//
// remplacer ***** par informations adéquat//
/////////////////////////////////////////////

//Connexion à la bdd
mysql_connect ("localhost", "root", "*****") or die (mysql_error()); 
mysql_select_db ("*****");

//Suppression des informations de la table (pour ré-enregistré proprement les données
//C'est optionnel ! ^^

$del = 'DELETE FROM `numerique`';

//Mise en forme de la requête
$result = mysql_query($del);
$sql = 'LOAD DATA LOCAL INFILE \'*****.csv\' 
		REPLACE INTO TABLE `******` 
			FIELDS 
			TERMINATED BY \';\' 
			ENCLOSED BY \'"\' 
			ESCAPED BY \'|\' 
		LINES 
			TERMINATED BY \'\\r\\n\' 
			IGNORE 1 LINES';

//Envoi de la requête à SQL
$result = mysql_query($sql);

//Affichage d'une erreur éventuel du traitement
echo mysql_error();


mysql_close ();

?>
En effet, cela me génère 2 problèmes :

1- Les chiffres décimaux ne sont pas transferé en intégralité. 10,25 devient 10
Ma colonne est paramétré "décimale (10,0)".
2- J'ai une liste d'une vingtaine de pages de lignes à 0 après le dernièr enregistrement.

Je n'ai pas trouvé de réponse ou un début de solution à ces problèmes. J'en appel donc à votre aide et votre générosité.

:wink:

ViPHP
ViPHP | 5924 Messages

30 avr. 2008, 08:30

En effet, cela me génère 2 problèmes :

1- Les chiffres décimaux ne sont pas transferé en intégralité. 10,25 devient 10
Ma colonne est paramétré "décimale (10,0)".
2- J'ai une liste d'une vingtaine de pages de lignes à 0 après le dernièr enregistrement.

Je n'ai pas trouvé de réponse ou un début de solution à ces problèmes. J'en appel donc à votre aide et votre générosité.

:wink:
Rien de plus normal. En informatique, on programme le plus souvent en anglais, ce qui signifie que les nombres aussi sont en anglais. Pour signifier 10,25, il faut donc écrire 10.25.
D'autre part, pour la vingtaine de pages vides, je pense que tu as des lignes vides ou mal formatées dans ton fichier.