$max) ? strlen($lignes[$i][$col]) : $max); $num = ((!is_numeric($lignes[$i][$col])) ? "N" : $num); } $i++; } return array($max, $num); } function displayHeaders() { echo "\n \n \n \n\nOutil de convertion : CSV en MySQL\n\n"; echo "\n\n\n\n\n\n"; } ##################### FIN DES FONCTIONS ################################# switch(isset($_POST['action'])) { case "ajouter": /* Variables */ $lignes = array(); $erreurs = array(); $separateur = (empty($_POST['separateur'])) ? ";" : $_POST['separateur']; $table = ((empty($_POST['table'])) ? "no_title" : $_POST['table']); @ini_set('max_execution_time','600'); /* En cas d'upload */ if($_POST['type'] == "upload") { $fichier = $_FILES['fichier_u']['tmp_name']; $pathinf = pathinfo($_FILES['fichier_u']['name']); if(strtolower($pathinf['extension']) != 'csv' and strtolower($pathinf['extension']) != 'txt') { @unlink($_FILES['fichier_u']['tmp_name']); displayHeaders(); echo "Le format de dossier est invalide. Pour la version de démonstration, on permet seulement des dossiers .txt et .csv"; exit; } } else { /* Vérifie que le fichier existe sur le serveur */ $fichier = $_POST['fichier_s']; if (!file_exists($fichier)) { displayHeaders(); echo "Dossier non trouvé !
Essayer de mettre le fichier sur votre disque dur et de choisr l'option ci dessous
"; exit; } } /* Génère le nom du fichier */ $date = date("d-m-y H\hi\m"); $nom_fichier = $table.' '.$date.'.sql'; /* Envoie les en-tetes */ header('Content-Type: application/octetstream'); header('Content-Disposition: filename="'.$nom_fichier.'"'); header('Pragma: no-cache'); header('Expires: 0'); /* Ouvre le fichier */ $fichier = file($fichier); /* Enlève les caracteres spéciaux de fin de ligne */ $fichier = str_replace(chr(10), "", $fichier); $fichier = str_replace(chr(13), "", $fichier); /* Place tout dans un tableau */ foreach($fichier as $ligne) { $champs = explode($separateur, $ligne); array_push($lignes, $champs); } if(isset($_POST['firstline']) AND $_POST['firstline'] == "oui") { $table_name = ''; /* Insertion des commentaires avec ajout de product_id auto incrementer en dur */ echo "# TABLE CREATION\n"; $i = 0; $nb_col = count($lignes[0]); echo "CREATE TABLE $table ( "; while(isset($lignes[0][$i])) { /* Trouve le max et le type */ $retour = FindMaxType($lignes, $i); /* Si champ sans nom, attribution d'un nom automatique */ $lignes[0][$i] = (($lignes[0][$i] == "") ? "no_title$i" : $lignes[0][$i]); /* Mets la ligne */ echo "`".mysql_escape_string(strtr($lignes[0][$i], " ", "_"))."`"; /* Ajoute le type de champ */ echo (($retour[1] == "Y") ? " INT($retour[0])" : " VARCHAR($retour[0])"); /* Cree l'identifiant si necessaire & si possible */ if($i==0 AND isset($_POST['firstcol']) AND $_POST['firstcol']=="oui") { if($retour[1]=="Y") # Si que des chiffres { echo " PRIMARY KEY NOT NULL AUTO_INCREMENT"; } else { array_push($erreurs,"La première colonne ne pourrait pas être une identification unique parce qu'elle contient des caractères d'alphanumérique."); } } $table_name .= $lignes[0][$i]; $i++; /* Termine l'affichage par , ou par ; */ echo ((isset($lignes[0][$i])) ? ", " : ");"); $table_name .= ((isset($lignes[0][$i])) ? ", " : ""); } /* Supprime la premiere ligne du tableau */ array_shift($lignes); echo "\n\n"; } /* Insertion des commentaires */ echo "# RECORDS\n"; $j = 2; /* Génère les enregistrements */ foreach($lignes as $ligne) { $i = 0; /* Erreur dans le fichier */ if(isset($_POST['firstline']) AND $_POST['firstline'] == "oui" AND count($ligne)!=$nb_col) { $classe = "erreur"; if(!in_array("Le nombre de champs ne s'assortissent pas !",$erreurs)) { array_push($erreurs,"Le nombre de champs ne s'assortissent pas !"); } } /* écriture de de l'insert table avec ajout de l'id en début */ echo 'INSERT INTO '.$table; echo (isset($table_name)) ? ' ('.$table_name.') ' : ''; echo ' VALUES ( '; while(isset($ligne[$i])) { echo "\"".mysql_escape_string(trim($ligne[$i]))."\""; $i++; echo ((isset($ligne[$i])) ? ", " : ");\n"); } $j++; } /* Insertion des commentaires */ echo "\n\n# FIN - Script créé par Axel de Vignon et amélioré et traduit par Web Média Services [www.webmediaservices.fr]
Retrouvez d'autres outils sur http://www.webmediaservices.fr/outils-webmaster.php \n\n"; /* Affichage des erreurs */ foreach($erreurs as $value) { echo "# Des erreurs ont été détectées : $value\n"; } break; default: displayHeaders(); echo "
"; ?>

Outil de convertion : CSV en MySQL



Nom de la table : Si vides, des noms de champ seront automatiquement produits
Séparateur : Séparateur utilisé dans le dossier de CSV
Ajoute une question de table de créer, en utilisant la première ligne du dossier
Place la première colonne en tant que "PRIMARY KEY AUTO-INCREMENT" (des numériques seulement)
Dossier à convertir : Le dossier est sur le serveur.
Le dossier est sur votre disque local ( Taille maximum : 2M)
\n\n"; } ?>