Hier, j’essayais péniblement de trouver un script pas trop contraignant pour transformer un fichier CSV en SQL (en requêtes “INSERT INTO” pour être plus précis). Comme je n’ai rien trouvé qui me plaisait, je me suis dit que j’allais rapidement le bricoler moi-même.
Je me suis aussi dit que ça pourrait servir à d’autres gens alors je l’ai mis en ligne : CSV2SQL
Ca a l’air de fonctionner relativement bien et relativement rapidement avec ce que j’ai pu essayer comme fichiers CSV (vous pouvez tester avec ce fichier : https://vinch.be//attic/test.csv) Il ne vous reste plus qu’à sauvegarder le résultat dans un fichier texte et à l’injecter dans votre SGBDR favori.
Pour ceux que ça intéresse et comme j’aime bien partager, voici le code source :
Fichier XHTML :
Fichier PHP :
N’hésitez pas à me faire part de vos remarques et suggestions d’améliorations.
Pratique!
Ce serait peut-être bien de pouvoir spécifier les types des champs, ou en tout cas pouvoir définir l’entourage champ par champ…
Pour le séparateur, il y a aussi ":","|", et "\t" (tabulation).
LikeLike
Hello Vinch,
Pour lire le CSV, j’ai vu la méthode fgetcsv()
( http://www.manuelphp.com/php/fun... )
LikeLike
Salut,
interessant ce petit script, je découvre ton site, qui est sympa également.
Saurait-tu si il existe de bons scripts pour faire de la synchronisation de base de donnée Access vers MySQL ??
Je suis en train de bosser sur un site qui aura besoin d’etre mis a jour souvent a partir de cette base access.
Merci 😉
LikeLike
MERCI!!!
J’ai cherché toute la journée d’hier, ce qui m’a permis de tester des logiciels qui faisaient tout tout seuls pour la modique somme de 70$.. desespéré, je tombe par hasard sur ton blog, et là, miracle!
Merci pour ton travail, ça m’a évité bien des heures de boulot!!
Bonne journée
LikeLike
Salut !
Sympa, j’ai eu le même problème, et je suis tombé aussi sur ca :
http://www.echoesdesign.com/boite-a-outils/transformer-vos-fichiers-csv-en-requete-mysql.html
http://www.echoesdesign.com/telechargements.html?func=fileinfo&id=1
LikeLike
Merci pour ce script prêt à l’emploi
LikeLike
Super pratique,
merci vinch de partager ton travail !
manu.
LikeLike
Salut,
tout d’abord merci, car ton code m’a beaucoup servi.
J’ai apporté une option pour ceux qui veulent utiliser la première ligne pour définir les colonnes.
Je pense que ça peut servir à d’autre donc voila le code :
################
## Le Fichier PHP ##
################
header(‘Content-type:text/plain’);
$separator = $_POST[‘separator’];
$entourage = $_POST[‘entourage’];
$table = $_POST[‘table’];
$lines = file($_POST[‘file’]);
if($_POST[‘usefirstline’]){
$titles = explode($separator,$lines[0]) ; // récupération du titre des colonnes
$title = “(” ;
foreach($titles as $titles){
$titles = trim($titles); // suppression des espaces au début et à la fin
if($entourage!=”none”)
$titles = substr($titles,1,strlen($titles)-2); // suppression des quotes
$titles = str_replace(“‘”,”\'”,$titles); // echappement devant les simples quotes
$title .= “$titles,”;
}
$title = substr($title,0,strlen($title)-1); // on supprime la dernière ,
$title .= “)” ;
unset($lines[0]); // suppression de la première ligne
}
foreach($lines as $line){
$values = explode($separator,$line);
$statement = “INSERT INTO $table $title VALUES (“;
foreach($values as $value){
$value = trim($value); // suppression des espaces au début et à la fin
if($entourage!=”none”)
$value = substr($value,1,strlen($value)-2); // suppression des quotes
$value = str_replace(“‘”,”\'”,$value); // echappement devant les simples quotes
$statement .= “‘$value’,”;
}
$statement = substr($statement,0,strlen($statement)-1);
$statement.= “);”;
echo $statement.”\n”;
}
################
## Le Formulaire ##
################
File URL
Table name
Fields separator
,
;
Fields enclosed by
‘
”
Use first line as Title
bonne continuation,
Alex
LikeLike
Merci Alex, très utile !
LikeLike
Muchas gracias !!!
Top !
LikeLike
Bonjour j’ai besoin d’un coup de main pour exécute le code je suis débutant dans la matière on vas dire et j’aurais besoins de votre aide, normalement il me suffit de faire une page avec le code html une autre avec le code php je les met dans le même fichier et c’est sensé me fait la même chose que quand je teste sur le site en ligne et pourtant je ne sais pas si l’écho ne se fait pas mais quand je clic sur submit la page reste blanche. je pourrais avoir un peut d’aide svp.
LikeLike
Bonjour pouvez vous m’expliquez comment je doit faire pour lancé ce code, juste faire un essai.
J’ai essayé de faire 2 fichier php, un avec le code html, l’autre avec le code php, et pourtant quand j’exécute le formulaire sa m’affiche une page blanche apparemment sans erreur, je n’ai fait qu’un copier coller des 2 code, et comme je n’y connais pas grand chose en php (on vas dir que je suis débutant) je ne sais pas si je doit mettre des ligne supplémentaire ou pas, pour faire la relation entre les 2 page sachant que quand je regarde le code source de la page blanche sous fire fox il me donne le code php que j’ai entrée.
LikeLike
Salut VINCH,
Vraiment merci pour votre script, il est simpa, simple et pratique . Il vas vraiment m’aider .
Merci bcp
J’espére que je trouverais plus de script util sur votre site
LikeLike
en faite,
Le code n’execute que 75% du fichier csv !! avez vous roncontré ce probléme ?
LikeLike
Merci pour ce super script, j’avais quelques dizaines de milliers d’entrées a parser, ça m’a bien facilité les choses ! 😉
Sinon, juste un truc a dire : le tout dernier echo de ton code comporte une coquillle. Il termine la ligne par ‘n’ au lieu d’un retour ligne. A corriger par un \r\n par exemple !
Voila, bonne continuation et merci encore !
LikeLike