Précédent   Forum des professionnels en informatique > Bases de données > MySQL > Administration
Administration Forum d'entraide sur l'administration de MySQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 14/02/2006, 20h36   #1
Membre à l'essai
 
Inscription : janvier 2006
Messages : 72
Détails du profil
Informations forums :
Inscription : janvier 2006
Messages : 72
Points : 23
Points : 23
Par défaut Importer CSV dans MySQL

Salut a tous,

Je suis en train de developer une aplication qui importe des données contenues dans un fichier CSV dans une base de données MySQL mais j'obiten une erreur:

Column count doesn't match value count at row 1

Mon fichier CSV est separé par des ";" et j'ai 6 colones, le voici:

Citation:
135/80R13TL;INTENSA;MJ 683;T;Ligeiros;27,10 €
145/80R13TL;INTENSA;MJ 683;T;Ligeiros;30,73 €
155/80R13TL;INTENSA;MJ 683;T;Ligeiros;31,46 €
et voici mon fichier php, ce code php je l'ai recuperé ici dans le forum et d'après son createur il funcionait, je n'ai fait que très peu de changements:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
 
<?php 
	//Connection a la db
	include("../config.php");
?>
<html>
<head>
<title>Importa&ccedil;&atilde;o de dados na tabela</title>
</head>
<body>
<h2>Importa&ccedil;&atilde;o de dados na tabela</h2>
 
<?php
 switch($action)
 {
  /* LECTURE ET AJOUT DES DONNEES DANS LA TABLE */
   case "ajouter":
 
  // ON ouvre le fichier à importer en lecture seulement 
 $fichier = $_FILES['fichier_u']['tmp_name'];
 IF (file_exists($fichier))
     $fp = fopen("$fichier", "r");
 else
     { /* le fichier n'existe pas */
       echo "O ficheiro não foi encontrado !<br>A importação foi cancelada.";
       exit();
     }
 
    while (!feof($fp)) /* Et Hop on importe */
    { /* Tant qu'on n'atteint pas la fin du fichier */
       $ligne = fgets($fp,4096); /* On lit une ligne */ 
 
       /* On récupère les champs séparés par ; dans liste*/
       $liste = explode( ";",$ligne); 
 
       /* On assigne les variables */
       $val1 = $liste[0];
       $val2 = $liste[1];
       $val3 = $liste[2];
       $val4 = $liste[3];
       $val5 = $liste[4];
       $val6 = $liste[5];
 
       /* Ajouter un nouvel enregistrement dans la table */
       $query = "INSERT INTO $table VALUES('$val1','$val2','$val3','$val4', '$val5', '$val6')";
       $result= MYSQL_QUERY($query);
 
       IF(mysql_error())
        { /* Erreur dans la base de donnees, sûrement la table qu'il faut créer */
           print "Erro na base de dados : ".mysql_error();
           print "<br>Importação cancelada.";
           exit();
        }
       else /* Tout va bien */
         print "$val1 $val2 $val 3 $val4 $val5 $val6 <br>";
     }
 
     echo "<br>Importação terminada com sucesso.";
 
     /* Fermeture */
     fclose($fp);
     MYSQL_CLOSE();
 
   break;
 
 
   /* FORMULAIRE DE CHOIX D'IMPORTATION */ 
 
   DEFAULT:
   ?>
<?php echo "<form name='form1' method='post' action=".$_SERVER['PHP_SELF']." enctype='multipart/form-data'>"; ?> 
Escolha a tabela na qual pretende importar os dados 
<TABLE border="0" cellspacing="0" cellpadding="3">
  <tr> 
    <td>Tabela :</td>
    <td> <SELECT name="table" class="box_amostra" size="1" id="combustivel">
        <OPTION value="Tabela" selected>Tabela</option>
        <OPTION value="escapes">Escapes</option>
        <OPTION value="escapes_oportunidades">Oportinidades Escapes</option>
        <OPTION value="escapes_prom_mes">Promoção Escapes</option>
        <OPTION value="pneus">Pneus</option>
        <OPTION value="pneus_oportunidades">Oportinidades Pneus</option>
        <OPTION value="pneus_prom_mes">Promoção Pneus</option>
      </select> </td>
  </tr>
  <tr> 
    <td>Ficheiro :</td>
    <td> <input type="file" name="fichier_u"> </td>
  </tr>
  <tr> 
    <td></td>
    <td> <input type="submit" name="submit" value="Inserir"> </td>
  </tr>
</table>
     <input type="hidden" name="action" value="ajouter"> 
    </form>
   <?php
   break;
 
   }
 
  ?>
 
</body>
</html>
The_freeman est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/02/2006, 21h41   #2
Rédacteur
 
Avatar de siddh
 
Inscription : novembre 2005
Messages : 3 879
Détails du profil
Informations personnelles :
Âge : 36

Informations forums :
Inscription : novembre 2005
Messages : 3 879
Points : 4 270
Points : 4 270
et ta table a quelle structure ?
__________________
Alunissage : Procédé technique consistant à déposer des imbéciles sur un rêve enfantin.

Cours | FAQ | Sources Javascript
Cours | FAQ | Sources PHP
Mes Articles
siddh est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/02/2006, 21h50   #3
Membre à l'essai
 
Inscription : janvier 2006
Messages : 72
Détails du profil
Informations forums :
Inscription : janvier 2006
Messages : 72
Points : 23
Points : 23
ha oui tu as raison, j'ai oublié de metre la structure de mes tables, voici le SQL pour la creation de mes tables:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
 
CREATE TABLE escapes (
  id_escapes INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
  referencia VARCHAR(15) NOT NULL,
  modelo TEXT NOT NULL,
  preco FLOAT NOT NULL,
  PRIMARY KEY(id_escapes)
);
 
CREATE TABLE pneus (
  id_pneus INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
  dimensao VARCHAR(15) NOT NULL,
  marca VARCHAR(20) NULL,
  modelo VARCHAR(20) NOT NULL,
  iv VARCHAR(5) NOT NULL,
  tipo VARCHAR(10) NOT NULL,
  preco FLOAT NOT NULL,
  PRIMARY KEY(id_pneus)
);
 
CREATE TABLE escapes_prom_mes (
  id_escapes INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
  referencia VARCHAR(15) NOT NULL,
  modelo TEXT NOT NULL,
  preco FLOAT NOT NULL,
  PRIMARY KEY(id_escapes)
);
 
CREATE TABLE pneus_prom_mes (
  id_pneus INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
  dimensao VARCHAR(15) NOT NULL,
  marca VARCHAR(20) NULL,
  modelo VARCHAR(20) NOT NULL,
  iv VARCHAR(5) NOT NULL,
  tipo VARCHAR(10) NOT NULL,
  preco FLOAT NOT NULL,
  PRIMARY KEY(id_pneus)
);
 
CREATE TABLE escapes_oportunidades (
  id_escapes INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
  referencia VARCHAR(15) NOT NULL,
  modelo TEXT NOT NULL,
  preco FLOAT NOT NULL,
  PRIMARY KEY(id_escapes)
);
 
CREATE TABLE pneus_oportunidades (
  id_pneus INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
  dimensao VARCHAR(15) NOT NULL,
  marca VARCHAR(20) NULL,
  modelo VARCHAR(20) NOT NULL,
  iv VARCHAR(5) NOT NULL,
  tipo VARCHAR(10) NOT NULL,
  preco FLOAT NOT NULL,
  PRIMARY KEY(id_pneus)
);
Merci pour te pencher sur mon probleme
The_freeman est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/02/2006, 22h00   #4
Rédacteur
 
Avatar de siddh
 
Inscription : novembre 2005
Messages : 3 879
Détails du profil
Informations personnelles :
Âge : 36

Informations forums :
Inscription : novembre 2005
Messages : 3 879
Points : 4 270
Points : 4 270
il faut que la table dans laquelle tu insert ai 6 colonnes aussi, surtout si tu ne precide pas dans quel chmp tu insère
__________________
Alunissage : Procédé technique consistant à déposer des imbéciles sur un rêve enfantin.

Cours | FAQ | Sources Javascript
Cours | FAQ | Sources PHP
Mes Articles
siddh est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/02/2006, 22h04   #5
Membre du Club
 
Inscription : février 2005
Messages : 93
Détails du profil
Informations personnelles :
Âge : 29
Localisation : Suisse

Informations forums :
Inscription : février 2005
Messages : 93
Points : 67
Points : 67
Envoyer un message via MSN à -DeN-
Et pourquoi ne pas utiliser l'importation de phpMyAdmin, qui fait automatiquement?
-DeN- est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/02/2006, 22h06   #6
Membre Expert
 
Inscription : juillet 2004
Messages : 1 033
Détails du profil
Informations forums :
Inscription : juillet 2004
Messages : 1 033
Points : 1 050
Points : 1 050
Citation:
Et pourquoi ne pas utiliser l'importation de phpMyAdmin, qui fait automatiquement?
Tu le diras au client
ePoX est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/02/2006, 22h18   #7
Membre à l'essai
 
Inscription : janvier 2006
Messages : 72
Détails du profil
Informations forums :
Inscription : janvier 2006
Messages : 72
Points : 23
Points : 23
Je vous remercie a tous ceux qui se sont penché sur mon probleme, le probleme est resulu, au moment que je fesait l'insert dans la db, il manquai le nom des champs sur les quels j'alais inserer mes données.

Voici le code corrigé si jamais quelqu'un en aurias besoin:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
 
<?php 
	//Connection a la db
	include("../config.php");
?>
<html>
<head>
<title>:.BORTEX - ADMIN .: Importa&ccedil;&atilde;o de dados</title>
<script LANGUAGE="JavaScript" type="text/JavaScript">
 
 
FUNCTION ValidateForm(){
	var tableID=document.frmSample.TABLE
	var ficheiro_uID=document.frmSample.fichier_u
 
 
	 //Verifie si la TABLE a été choisie
     IF (tableID.value == "Tabela"){
     	alert("Tem que escolher uma Tabela")
        tableID.focus()
        RETURN false
     }
 
       // Verifie si le fichier a importer a eté choisi
     IF ((ficheiro_uID.value==NULL)||(ficheiro_uID.value=="")){
		alert("Tem que escolher o fichiero que pretende importar!")
		ficheiro_uID.focus()
		RETURN false
	}
 
	RETURN true
 }
 
//-->
</script>
 
</head>
<body>
<h2>Importa&ccedil;&atilde;o de dados </h2>
 
<?php
 switch($action)
 {
  /* LECTURE ET AJOUT DES DONNEES DANS LA TABLE */
   case "ajouter":
 
  // ON ouvre le fichier à importer en lecture seulement 
 $fichier = $_FILES['fichier_u']['tmp_name'];
 IF (file_exists($fichier))
     $fp = fopen("$fichier", "r");
 else
     { /* le fichier n'existe pas */
       echo "O ficheiro não foi encontrado !<br>A importação foi cancelada.";
       exit();
     }
 
    while (!feof($fp)) /* Et Hop on importe */
    { /* Tant qu'on n'atteint pas la fin du fichier */
       $ligne = fgets($fp,4096); /* On lit une ligne */ 
       /* On récupère les champs séparés par ; dans liste*/
       $liste = explode( ";",$ligne); 
       /* On assigne les variables */
       $val1 = $liste[0];
       $val2 = $liste[1];
       $val3 = $liste[2];
       $val4 = $liste[3];
	   $val5 = $liste[4];
       $val6 = $liste[5];
 
       /* Ajouter un nouvel enregistrement dans la table */
       $query = "INSERT INTO $table (dimensao, marca, modelo, iv,tipo, preco) VALUES('$val1','$val2','$val3','$val4', '$val5', '$val6')";
       $result= MYSQL_QUERY($query);
 
       IF(mysql_error())
        { /* Erreur dans la base de donnees, sûrement la table qu'il faut créer */
           print "Erro na base de dados : ".mysql_error();
           print "<br>Importação cancelada.";
           exit();
        }
       else /* Tout va bien */
         echo "Dados inseridos:<br>Valor 1 : ".$val1. " Valor 2 : ".$val2." Valor 3 : ".$val3. " Valor 4 :".$val4. " Valor 5 : ".$val5. " Valor 6 : ".$val6."<br><br>";
     }
 
     echo "<br>Importação terminada com sucesso.";
 
     /* Fermeture */
     fclose($fp);
     MYSQL_CLOSE();
 
   break;
 
 
   /* FORMULAIRE DE CHOIX D'IMPORTATION */ 
 
   DEFAULT:
   ?>
<?php echo "<form name='frmSample' method='post' action=".$_SERVER['PHP_SELF']." enctype='multipart/form-data' onSubmit='return ValidateForm()'>"; ?> 
Escolha a tabela na qual pretende importar os dados 
<TABLE border="0" cellspacing="0" cellpadding="3">
  <tr> 
    <td>Tabela :</td>
    <td> <SELECT name="table" class="box_amostra" size="1" id="combustivel">
        <OPTION value="Tabela" selected>Tabela</option>
        <OPTION value="escapes">Escapes</option>
        <OPTION value="escapes_oportunidades">Oportinidades Escapes</option>
        <OPTION value="escapes_prom_mes">Promoção Escapes</option>
        <OPTION value="pneus">Pneus</option>
        <OPTION value="pneus_oportunidades">Oportinidades Pneus</option>
        <OPTION value="pneus_prom_mes">Promoção Pneus</option>
      </select> </td>
  </tr>
  <tr> 
    <td>Ficheiro :</td>
    <td> <input type="file" name="fichier_u"> </td>
  </tr>
  <tr> 
    <td></td>
    <td> <input type="submit" name="submit" value="Inserir"> </td>
  </tr>
</table>
     <input type="hidden" name="action" value="ajouter"> 
    </form>
   <?php
   break;
 
   }
 
  ?>
 
</body>
</html>
The_freeman est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 03h03.


 
 
 
 
Partenaires

Hébergement Web