rss
Rechercher : dans
Par : Pertinence Date Nom d'utilisateur
Statut :

Importation fichier csv dans mysql (php)

Posté par Solmhyrn, le mercredi 13 juin 2007 à 09:50:31
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
Répondre à Solmhyrn  Signaler ce message aux modérateurs Aller au dernier message


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
 kuslargibi, le jeudi 30 août 2007 à 00:29:15
// ************************************************************­****** *
// ******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
Logiciels pertinents trouvés dans les téléchargements
Télécharger WAMP Server 2.0cWAMP Server - WAMP5 (WAMP signifiant Windows Apache Mysql PHP) est une plateforme de développement Web sous Windows. Il vous permet de...Catégorie: Serveurs
Licence: Freeware/gratuit
Télécharger easyPHP 2.0b1easyPHP - EasyPHP est un environnement de travail packagé comprenant le serveur web Apache, le système de gestion de bases de données...Catégorie: Serveurs
Licence: Open Source
Télécharger Casc'ADSL 0.99 build 4209Casc'ADSL - Casc'ADSL est un outil destiné aux Internautes se connectant via le service d'accès distant et désireux de maintenir leur...Catégorie: ADSL
Licence: Freeware/gratuit
Télécharger FolderMarker  1.4FolderMarker - La routine peut s'installer rapidement en utilisant votre ordinateur. Tous les dossiers se ressemblent par la couleur et il...Catégorie: Personnalisation
Licence: Freeware/gratuit
Plus de logiciels gratuits sur « Importation fichier csv dans mysql (php) »