IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Création d'une base de donné a partir des fichier CSV


Sujet :

PHP & Base de données

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2014
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2014
    Messages : 43
    Points : 40
    Points
    40
    Par défaut Création d'une base de donné a partir des fichier CSV
    Bonjour tout le monde , je viens vers vous parce que j'ai besoin d'un coup de main pour que je puisse avancée .

    je suis en stage dans une entreprise et il m'en demandé de créer une base de donné a partir de plusieurs fichier csv c'est a dire ils veulent avoir tous le contenu des fichier dans une base de données pour qu'il puissent par la suite l'interroger avec des requêtes SQL.
    j'ai 12 dossier (les mois de l'année) et chaque dossier contiens un certains nombre de fichier csv et chaque fichier csv contient des informations du client (environ 10 champs séparée par des virgules).

    je sait faire la conception Merise (MCD-->MPD-->ficher sql de creation de la base) mais je sais pas par quoi commencé, j'ai passé une semaine a lire l’énoncé mais je trouve pas le fil de début pour pouvoir démarré .
    merci d'avance pour votre assistance .

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Sur quoi porte ta difficulté ?
    Un fichier CSV c'est déjà une table de données (contenu dans un fichier, sans relation entre les données).
    La réalisation basique consisterait a simplement injecter les données dans une table ayant la même structure de données que le CSV.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2014
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2014
    Messages : 43
    Points : 40
    Points
    40
    Par défaut
    Citation Envoyé par sabotage Voir le message
    Sur quoi porte ta difficulté ?
    Un fichier CSV c'est déjà une table de données (contenu dans un fichier, sans relation entre les données).
    La réalisation basique consisterait a simplement injecter les données dans une table ayant la même structure de données que le CSV.
    merci pour votre réponse, c'est gentil.
    donc si j'ai bien compris je doit créer une table ayant les mêmes champs que ceux des fichier csv puis j'importe touts les fichierd cvs via phpmyadmin dans la même table, et comme ca j'aurais une base de donnée contenant une seule table !!!!!!! je sent que c'est un peut bête mon raisonnement mais je vois pas autrement, et si c'est juste ce que je dis es qu' il sera possible de interroger cette base avec des requêtes sql?????

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    C'est tout à fait ça.
    C'est la manière directe et rapide de le faire en tout cas.

    Ultérieurement tu peux toujours établir une structure relationnelle mais s'il s'agit de données d'archive qui donc ne vont pas évoluer, je ne pense pas que ca ait un interet.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2014
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2014
    Messages : 43
    Points : 40
    Points
    40
    Par défaut
    Citation Envoyé par sabotage Voir le message
    C'est tout à fait ça.
    C'est la manière directe et rapide de le faire en tout cas.

    Ultérieurement tu peux toujours établir une structure relationnelle mais s'il s'agit de données d'archive qui donc ne vont pas évoluer, je ne pense pas que ca ait un interet.

    merci de votre réponse , j'ai fait 3 table séparé ( Fournisseur, facture, période), j'ai créer des relations , j'ai fait le MCDavec AnayseSI puis il m'a générer du SQL mais il affiche des erreurs quand je l'exécute sous msql , donc j'ai laissé tombé.
    Maintenant je suis entrain de crée manuellement les tables mais pareil aussi message d'erreur au moment de la création de la table #1060 - Duplicate column name 'Value', Nom : beug.png
Affichages : 435
Taille : 154,2 Ko
    effectivement j'ai deux colonnes qui s'appellent Value mais le deuxième a un 'v' minuscule, donc normalement c'est pas pareil mais MySQL considère que c'est la même chose .
    El le problème c'est que je peut pas changer le nom de la colonne parce que après je doit importer 200 csv dont les champs doit être les mêmes que ceux de la table, si non les champs vont pas se correspondent au cours de l'importation .!!!!!!!
    j'avance comme une tortue mais toujours je démarre pas

  6. #6
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Le nom des colonnes de la table n'a pas besoin de correspondre aux intitulés de colonnes du CSV.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  7. #7
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2014
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2014
    Messages : 43
    Points : 40
    Points
    40
    Par défaut
    Citation Envoyé par sabotage Voir le message
    Le nom des colonnes de la table n'a pas besoin de correspondre aux intitulés de colonnes du CSV.

    merci,
    j'ai fait une base de 3 table , normalement tout est bon. Maintenant je doit charger la base de donné avec mes fichiers csv, pour ça j'ai crée une petite formulaire pour que l'utilisateur récupère le fichier csv du bureau puis quand il clic sur envoyer ca renvoie le fichier csv vers la base de donné .
    voila mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
     
    <?php
    if (isset($_POST['userfile'])){
    	$userfile=$_POST['userfile'];
    	unset ($_POST['userfile']);
    }
    else {
    	$userfile='';
    }
     
     
    try
    {
    	$db = new PDO('mysql:host=localhost;dbname=mabase;charset=utf8', 'root', '');
    }
    catch (Exception $e)
    {
            die('Erreur : ' . $e->getMessage());
    }
    $sql=(" LOAD DATA LOCAL INFILE '$userfile'
    INTO TABLE facture
    FIELDS TERMINATED BY ';' 
     
    IGNORE 1 LINES ");
     
    $result=$db->query($sql);
     
     
    ?>
    ça me renvoie une erreur : Warning: PDO::query(): LOAD DATA LOCAL INFILE forbidden in C:\wamp\www\stage\importer.php on line 25
    je sais pas ci c'est déjà logique ce que j'ai écris comme code !!!!!!!!!

  8. #8
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    je sais pas ci c'est déjà logique ce que j'ai écris comme code !!!!!!!!!
    Si on parle d'un formulaire d'upload ce n'est pas $_POST c'est $_FILES !!!!!!!!!
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  9. #9
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2014
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2014
    Messages : 43
    Points : 40
    Points
    40
    Par défaut
    Citation Envoyé par sabotage Voir le message
    Si on parle d'un formulaire d'upload ce n'est pas $_POST c'est $_FILES !!!!!!!!!

    Oui merci, je viens de me rendre compte de ça

    j'ai ça maintenant toujours ca marche pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
     
    <?php
    if (isset($_FILES['userfile'])){
    	$userfile=$_FILES['userfile'];
    	unset ($_FILES['userfile']);
    }
    else {
    	$userfile='';
    }
     
     
    try
    {
    	$db = new PDO('mysql:host=localhost;dbname=mabase;charset=utf8', 'root', '');
    }
    catch (Exception $e)
    {
            die('Erreur : ' . $e->getMessage());
    }
    $sql = "LOAD DATA LOCAL INFILE '" . $_FILES['userfile']['tmp_name'] . "'
    INTO TABLE 'facture' 
    			FIELDS TERMINATED BY ';' 
    			LINES TERMINATED BY '\r\n'
    			IGNORE 1 LINES;";
     
    $result=$db->query($sql);
     
    $req = $db->prepare($sql);
    		$req->execute();
    ?>
    toujours avec le fameux message d'erreur Warning: PDO::query(): LOAD DATA LOCAL INFILE forbidden
    c'est un peut avancé par apport a mon niveau

  10. #10
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Ligne 5 tu détruis la variable que tu veux utiliser ligne 20.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

Discussions similaires

  1. [AC-2007] Création d'une base de données pour Gestion des stocks
    Par manovo31 dans le forum Modélisation
    Réponses: 1
    Dernier message: 25/10/2012, 22h38
  2. Création d'une base de données pour gérer des projets
    Par Rodrigue dans le forum Modélisation
    Réponses: 4
    Dernier message: 19/11/2010, 17h14
  3. Réponses: 5
    Dernier message: 11/03/2010, 21h28
  4. Réponses: 14
    Dernier message: 24/11/2008, 10h15
  5. Création d'une base de données pour gestion des stocks
    Par samaaantha dans le forum Modélisation
    Réponses: 8
    Dernier message: 08/05/2008, 21h13

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo