Rechercher : dans
Par :

Importation fichier csv dans mysql (php)

Dernière réponse le 17 jui 2009 à 10:20:41 Solmhyrn, le 13 jun 2007 à 09:50:31 
 Signaler ce message aux modérateurs

Bonjour à tous,

voilà, je vous soumets mon problème que je tourne et retourne dans tous les sens..

J'ai un fichier csv de 500 lignes, dont une ligne d'entête, issu d'une application spécifique.
Lorsque je l'importe dans ma base mysql, (que ce soit en PHP ou avec easy php), seule la première ligne est importée.

J'ai donc essayé de supprimer cette première ligne.
J'ouvre mon fichier, et à partir de la deuxième ligne, je le recopie dans un nouveau fichier.
1- Si j'utilise fputcsv($fichier_new,$ligne,';'), le même problème apparaît sur $fichier_new
2- Si j'utilise une concaténation de champs séparés par des ";" avec un "\r\n" en fin de ligne, puis insertion dans un nouveau fichier avec fputs($fichier_new,$string), celà fonctionne en importation dans mysql avec load data infile, mais lorsque j'ouvre $fichier_new dans excel, j'ai des lignes blanches intercalées.

Comment résoudre mon problème?

Avec 5000 lignes çà va, mais avec 50000, j'ai peur de ne pas pouvoir ouvrir $fichier_new dans excel (limité à 65000 lignes je crois).

Merci de vos conseils....

Configuration: Windows 2000
Firefox 2.0

Meilleures réponses pour « Importation fichier csv dans mysql (php) » dans :
[Python] Lire et écrire des fichiers CSV Voir LIRE ET ÉCRIRE DES FICHIERS CSV Python www.python.org, dans sa version 2.4 supporte de facto le format CSV (comma-separated values: valeurs séparées par des virgules). La Library Reference est certes très explicative à ce...
[PHP] Upload de fichiers VoirLe langage PHP permet de gérer des fichiers envoyés (uploadés) grâce à un formulaire HTML. Formulaire d'envoi de fichiers Configuration de PHP pour permettre l'upload Récupération du fichier avec PHP Formulaire d'envoi de fichiers La...
Installation rapide de LAMP (Apache+MySql+php) sous Linux VoirLAMP = Linux+Apache+MySql+Php. C'est le serveur web par excellence. L'ensemble est facile à installer. Installation rapide sudo aptitude install apache2 php5 mysql-server php5-mysql libapache2-mod-php5 Le mot de passe administrateur mySQL...
Excel - Convertir fichier(s) CSV / XLS VoirComme dit dans le titre, cette application convertit des fichiers CSV en fichiers XLS N’est pas nécessaire pour Excel 2007, ce dernier faisant la conversion automatiquement La conversion n’ayant pas de mise en forme, en cas de modification...
Fichier CSV VoirFormat CSV Un fichier CSV est un fichier tableur, contenant des données sur chaque ligne séparés par un caractère de séparation (généralement une virgule ou un point-virgule). Comment lire un fichier CSV ? Il peut être lu avec un tableur tel que...

1

kuslargibi, le 30 aoû 2007 à 00:29:15
  • +2

// ************************************************************­****** *
// ******Lire un csv et l'importer dans la base de donnée *
// ******2 fichiers nécessaires : formulaire.php et ajouter.php *
// *********l'un pour choisir le fichier csv et l'autre pour *
// ***************enregistrer dans la bdd *
**** le fichier csv doit etre du type ci dessous *
*** link,email *
*** www.mafonction.com,axel@tueslemeilleur.com *
*** www.csvfacile.com,csv@insert.com *
///*********************************************************­*** *********




//formulaire.php
<form action="ajouter.php" method="post" enctype="multipart/form-data" name="form1">


<p><input type="file" name="file" /></p>

<input type="submit" name="Submit" value="Submit">
</form>


________________________________________________






//ajouter.php


//lire un csv et ajouter le couple email,url dans la base de donnee

if (isset($_FILES['file'])) {
$file = $_FILES['file']['tmp_name'];
$handle = fopen($file,'r');
$row = 1;
$handle = fopen("$file", "r");
while (($data = fgetcsv($handle, 4096, ",")) !== FALSE) {
$num = count($data);
//echo "<p> $num fields in line $row: <br /></p>\n";
$row++;
for ($c=0; $c < $num; $c++) {

//je met les donnees en miniscule et detecte si l'email est dans la colonne 0 ou 1
//meme chose pour l'url


//je les transformes en miniscule
$data[1]=strtolower($data[1]);
$data[0]=strtolower($data[0]);
//je controle l'entete du csv
if ($data[1]=='emails' && $data[0] == 'links' ) $mode=1 ;
if ($data[1]=='email' && $data[0] == 'link' ) $mode=1 ;
if ($data[1]=='email' && $data[0] == 'links' ) $mode=1 ;
if ($data[1]=='emails' && $data[0] == 'link' ) $mode=1 ;


////meme chose pour le mode 2 il faut changer $data[0] par $data[1]
///c'est à dire si l'on souhaite avoir email,link, il faut recopier le
///meme code et changer tous les $data[0] par $data[1] et $data[1] par $data[0]


}




if ($mode==1)
{
//je controle l'email

$avant_arobase = '[-a-z0-9!#$%&\'*+\\/=?^_`{|}~]';
$nomdudomaine = '([a-z0-9]([-a-z0-9]*[a-z0-9]+)?)';

$caract_allow_before_arobase = '/^' . $atom . '+' .
'(\.' . $avant_arobase . '+)*' .

'@' .
'(' . $nomdudomaine . '{1,63}\.)+' .

$domain . '{2,63}$/i';

// test de l'adresse e-mail
if (preg_match($caract_allow_before_arobase, $data[1])) {


}
else
{

$data[1] = NULL ;


}

$data[1]=strtolower($data[1]);
$data[0]=strtolower($data[0]);

//je controle tous les donnees s'il s'agit bien d'un url et d'un email
///dans le cas contraire, ils seront filtrées


$point = strpos($data[0],".");
if($point=='')
{
$data[0]=NULL;
}


$point = strpos($data[0],"@");
if($point=='')
{
$data[0]=$data[0];
}
else
{
$data[0]=NULL;
}










if ( $data[1] != NULL && $data[0] != NULL )
{
$numberdownload=$numberdownload+1;

$marequete = "INSERT INTO matable SET
monurl ='$data[0]' ,
monemail ='$data[1]'
";




$resultat=mysql_query ($marequete) or die (mysql_error());
}
}




}



//if ( $resultat ){ echo "<p> insertion with Succesfully </p> <p>
//" ;

//si des adresses ont ete enregistrer
if ($numberdownload>0){
echo " <p>You have downloaded $numberdownload combinaisons </p>";
echo "<p>The list Id is : $rowIdListNext </p>";
}

///si aucune adresse a ete enregistrer
if ($existadresse==0 && $numberdownload==0)
{
echo " <p> Error .. Your Csv file has a problem.</p>";
echo " <p> Please notice that your csv file has a header</p>";
}
//si les adresses existe deja
if ($existadresse>0 )
{
echo " <p>$existadresse combinaisons already exist! </p>";

}


//renvoie à la page qui a valider le formulaire...c'est à dire vers formulaire.php
$departure=$_SERVER['HTTP_REFERER'];//recover the adress which the user come from
echo "<meta HTTP-EQUIV=\"Refresh\" content=\"5;URL=$departure \"> " ;

Configuration: Windows XP
Firefox 2.0.0.6

Répondre à kuslargibi

2

 amira_t, le 17 jui 2009 à 10:20:41

Bonjour,
j'ai essayer a importer un fichier csv dans easyphp mais il m'envoie un message d'erreur.
voila le message:
MySQL a répondu:Documentation
#1065 - Query est vide

merci de m'avoir repondre le plutot possible.
bonne journee. :)

Répondre à amira_t