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

  1. #1
    Membre à l'essai
    Exécuter des commandes SQL à partir d'un fichier
    Je suis retraité. Je travailles comme bénévole pour une ASBL qui aide des personnes en difficultés financières et autres. Afin d’apporter mon aide à cet ASBL, je souhaite apprendre la langage de programmation «*MySQL*». Pour ce faire je me sers du cours «*Administrez vos bases de données avec MySQL*» se trouvant sur le site «*OPEN CLASSROOMS*».
    Je me sers de la version 8.0 de MySQL.
    Lors de ma connexion j’exécute la commande SET NAMES 'utf8mb4*;.
    J’ai crée une base de données «*elevage*» laquelle comporte une table «*Animal*».
    Je suis «*User*» de la base de données elevage.

    Après avoir chargé la base de données, je n’arrive pas à me connecter en tant qu’user. Pouvez vous me renseigner la commande qu’il faut exécuter s’il vous plaît.
    La table «*Animal*» se compose actuellement comme suit*:

    Dans le cours susmentionné il est demandé d’ajouter une soixantaine d’animaux repris dans un tableau qu’il faut enregistrer via un éditeur de texte au format SQL.

    Pour ce faire, j’ai utilisé Notepad++7.8.7 (64 bit). Le tableau est enregistré sous le nom remplissageAnimal.sql. Ce fichier a été placé respectivement C:\Program Files (x86)\MySQL\remplissageAnimal.sql et C:\Users\User\Documents\ remplissageAnimal.sql.
    Lorsque j’exécute les commandes afin pour introduire les données dans ma table Animal affiche «*error*»

    Voulez-vous bien m’aider dans l’étude de ce langage de programmation et m’aider à résoudre les deux petits problèmes susmentionnés.
    Je suis à votre disposition pour tout renseignement complémentaire.

  2. ###raw>post.musername###
    Expert éminent sénior
    Salut Liegecam64.

    Citation Envoyé par Liegecam64
    je souhaite apprendre la langage de programmation «*MySQL*».
    MySql n'est pas un langage de programmation mais un SGBDR.
    SQL (Structured Query Language) est un langage de requête.

    Citation Envoyé par Liegecam64
    Après avoir chargé la base de données, je n’arrive pas à me connecter en tant qu’user.
    Je constate que vous êtes dans la console MySql.
    De ce fait, vous utilisez un compte utilisatur.
    Si vous ne savz pas qui vous êtes en tant qu'utilisateur, faites :
    Code mysql :Sélectionner tout -Visualiser dans une fenêtre à part
    select user();

    Vous aurez à gauche du "@" le compte utilisateur et à droite le host.

    Citation Envoyé par Liegecam64
    J’ai crée une base de données «*elevage*» laquelle comporte une table «*Animal*».
    Dans le cours de openclassrooms, vous disposez de toutes les explications dont vous avez bsoin :
    --> https://openclassrooms.com/fr/course...s-utilisateurs

    Vu que vous posez des questions, c'est que vous n'avez pas bien compris le cours.

    1) avant toute chose, vous devez créer votre "database" afin d'y mettre vos tables.
    Pour ce faire, vous vous rendez "phpmyadmin", à partir du compte "root".
    Puis vous cliquez sur l'onglet "base de données".
    En haut, sur la gauche, il y a marqué : "Création d'une base de données".
    Vous mettez "elevage" et "utf8_general_ci" et vous validez.

    2) sur la gauche, vous devez voir une nouvelle ligne ayant comme nom "elevage".
    Vous cliquez dessus.

    3) vous cliquez maintenant sur "importer" et vous renseignez le nom du fichier, qui je suppose est à l'identique du lien ci-dessus.
    Le jeu de caractères est "utf-8".

    4) vous devez vous créer un compte utilisateur, par exemple "noel", n'est-ce pas.
    Vous tapez ceci :
    Code mysql :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    DROP   USER  IF EXISTS                                 'noel'@'%';
    CREATE USER                                            'noel'@'%'           IDENTIFIED WITH mysql_native_password BY 'noel';
    GRANT  USAGE                ON         *.* TO          'noel'@'%';
    GRANT  GRANT ALL PRIVILEGES ON `elevage`.* TO          'noel'@'%';
    
    flush privileges;

    Le "%" signifie depuis n'importe quelle adresse ip.
    Si vous préférez vous restreindre à "localhost", remplacez "%" par "localhost".
    Vous avez tous les droits sur la base de données "elevage".

    Le "flush privilège" sert à charger vos modifications dans "mysql".

    5) pour tester, il suffit de sortir de "phpmyadmin" et d'y rentrez avec :
    --> user : noel
    --> password : noel

    6) je vois que vous avez mis votre SGBDR MySql dans "program files".
    C'est une mauvaise idée à cause de l'espace entre le "m" de program et le "f" de files.
    Le mieux est de mettre mysql à la racine de "c:/" comme ceci "c:/mysql".

    7) je suppose que l'on ne vous a pas expliquer ce que représente un chemin "path".
    Je vous conseille de travailler correctement. Pour ce faire, vous créez un répertoire de nom "c:/cours_mysql".
    Et dans ce répertoire, vous créez par exemple un autre répertoire "ex_01", pour exercice N°1.

    dans ce répertoire, vous mettez ce fichier que vous baptisez "noel.bat" sans le modifier :
    Code bat :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
    @echo off
     
    setlocal enableDelayedExpansion
     
    chcp 1252 > nul
     
    set PATH=.;c:\mysql\mysql8.0.20\bin\;%PATH%
     
    SET FIC=%~nx0
    SET FIC=%FIC:bat=sql%
     
    @echo.
    mysql < %FIC%  --verbose  --force
     
    endlocal
    @echo.
    pause
    exit

    Pour le chemin, j'ai improvisé car je ne sais pas ce que vous avez fait chez vous.
    En ce qui me concerne, j'utilise wampserver, et mon chemin est : "set PATH=.;F:\Wamp\bin\mysql\mysql8.0.20\bin\;%PATH%".
    Attention, le prefixe du nom de votre fichier "noel" peut être remplacé par n'importe quelle chaine de caractères.
    Mais le suffixe ".bat" ne doit pas être modifier.

    8) comme vous avez créé "noel.bat", vous créez à vide votre fichier noel.sql".
    Attention, le suffixe "sql" ne doit pas être modifié.
    Et si vous avez baptisez "noel.bat", vous devez mettre le même sufixe "noel.sql".

    Pour tester le contenu du fichier "noel.sql", il suffit de cliquer sur "noel.bat".
    Une fenêtre de type console windows s'ouvre et vous aurez son exécution.

    9) dans le fichier "noel.sql", les premières lignes sont obligatoire et vous devez mettre :
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    START TRANSACTION;
    use elevage;

    Et les dernières sont :
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    commit,
    exit


    Citation Envoyé par Liegecam64
    Dans le cours susmentionné il est demandé d’ajouter une soixantaine d’animaux repris dans un tableau qu’il faut enregistrer via un éditeur de texte au format SQL.
    10) Vous devez créer un fichier ".txt" où chaque ligne contient les données qui seront chargées dans votre table. Par exemple :
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    chien, F, '2008-02-20 15:45:00', canaille, \N

    Je n'ai tapé que la première ligne.
    Vous sauvegardez ce fichier sous le nom "fichier.txt".

    11) pour le charger dans votre table, vous ajoutez dans "noel.sql", les lignes suivantes :
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    LOAD DATA INFILE 'c:/cours_mysql/ex_01/fichier.txt'
         INTO TABLE `Animal`
         CHARACTER SET utf-8
         FIELDS TERMINATED            BY ';'
                OPTIONALLY ENCLOSED   BY '\"'
                ESCAPED               BY '\\'
         LINES  TERMINATED            BY '\r\n'
         IGNORE 0 LINES
         (espece, sexe, date_naissance, nom, commentaires);

    Ce "load data infile" va charger le contenu de "fichier.txt", dans la table "Animal".

    @+
      1  0

  3. #3
    Expert éminent sénior
    Bonjour,

    Outre les conseils qui précèdent et auxquels je souscris, j'ajoute qu'une base de données n'est pas un tableur, toutes les informations ne doivent pas être stockées dans une table unique.
    Par exemple, le libellé du type d'animal n'a rien à faire dans la table décrivant chaque animal
    Il faut modéliser une table des expèces (chien, chat, poisson...) et une table des individus (médor, rex, minou, minette, bubulle...)
    Par exemple (PK soulignées, FK suffixées #)
    ES_espece(ES_ident, ES_code, ES_nom...)
    IN_individu(IN_ident, IN_nom, IN_datenais, ES_ident#...)

    Ce principe est très important dans les bases de données : tout attribut non clef doit dépendre fonctionnellement de la clef.
    Cf. les formes normales ICI
    Le non respect des formes normales est l'une des sources principales d'une intégrité défaillante et de requêtes complexes et peu performantes.
    Attention à la modélisation, il est difficile et coûteux de modifier le modèle de données une fois que les applications sont déployées.
    Il y a un forum consacré à la modélisation des bases de données, il se situe ICI

  4. #4
    Expert éminent sénior
    Salut Escartefigue.

    Ce gentil retraité suit la formation MySql sur le site OpenClassRooms (anciennement le site du zéro).
    Il n'a pas les compétences pour modifier la base de données.

    Néanmoins, pour une formation, leur inculquer de mauvaises habitudes n'est pas ce que je nommerai de bons conseils.

    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

  5. #5
    Membre à l'essai
    Elaborer une base de données avec MySQL
    Bonjour Artemus 26, bonjour Escartefigue,
    Tout d’abord merci d’avoir donner une réponse à mes demandes.
    J’ai lu attentivement les deux points (les formes normales et la modélisation des bases de données) soulevés par Escartefigue. Si j’ai bien compris, lors de l’élaboration d’une base de données il faut commencer par sa modélisation.
    Comme dit ci-avant je travailles comme bénévole pour une ASBL qui aide des personnes en difficultés financières et autres. Cet ASBL met à disposition des personnes qui le demandent via une permanence téléphonique, un chauffeur avec son véhicule pour se rendre dans une administration, dans un magasin pour faire des courses, chez le médecin ou à l’hôpital (sans ou avec attestation à délivrer à la mutuelle en vue du remboursement de la course) ou autres.
    Les personnes sollicitant ce service doivent acquérir pour un prix modeste une carte d’adhésion et pour la course il y a une prise en charge plus le tarif au kilomètre.
    J’ai élaboré une base de données avec Microsoft Access 2007 mais j’ai tellement chipoté dedans qu’elle ne fonctionne plus. C’est la raison pour laquelle j’ai commencé l’apprentissage de MySQL.
    Je souhaite réaliser une base de données comprenant les données de la course, des usagers, de leur administrateur de biens et ou personne de contact éventuel, de la carte d’adhésion etc.…. permettant d’extraire des renseignements concernant ce service rendu et ce principalement pour l’assemblée générale.
    Seriez-vous disposé à m’aider dans cette réalisation. Je ne souhaite pas faire un copier/coller. Je veux réellement réaliser cette base de données moi-même en profitant de vos conseils.
    Monsieur Artemus 26 dans votre message vous mentionnez que la formation MySQL du site OpenClassRooms inculque de mauvaises habitudes. Pouvez-vous me renseigner un tutoriel qui m’aiderait dans la réalisation de mon projet.
    Dans un premier temps, j’ai désinstallé mysql-installer-community-8.0.21.0 pour le réinstaller. Lors de son installation MySQL se place d’office dans le répertoire Programmes (x86). Comment dois-je procéder pour parvenir à l’installer à la racine C*:
    Lorsque je fais le code mysql select user(); j’obtiens "root" à gauche du "@".
    Quel code mysql dois-je faire pour me rendre "phpmyadmin", à partir du compte "root".
    Je vous remercie d’avance de l’aide que vous allez m’apporter.

  6. #6
    Expert éminent sénior
    Bonsoir Liegecam64,

    Citation Envoyé par Liegecam64 Voir le message
    Si j’ai bien compris, lors de l’élaboration d’une base de données il faut commencer par sa modélisation.
    En effet, la modélisation de la base de données c'est comme les fondations d'une maison, si elles sont instables, c'est l'ensemble de l'édifice qui est en péril



    Citation Envoyé par Liegecam64 Voir le message
    Comme dit ci-avant je travailles comme bénévole pour une ASBL qui aide des personnes en difficultés financières et autres. Cet ASBL met à disposition des personnes qui le demandent via une permanence téléphonique, un chauffeur avec son véhicule pour se rendre dans une administration, dans un magasin pour faire des courses, chez le médecin ou à l’hôpital (sans ou avec attestation à délivrer à la mutuelle en vue du remboursement de la course) ou autres.
    Cette description succincte est déjà un bon début pour élaborer la base de données, il faut ajouter les règles de gestion c'est à dire les interactions entre les différents acteurs que vous avez cités
    Pour vous aider dans cette démarche, essentielle j'insiste et assez simple quand on procède avec méthode, n'hésitez pas à présenter votre projet dans le forum modélisation dont je vous ai donné l'adresse dans ma précédente réponse.

  7. #7
    Expert éminent sénior
    Salut Liegecam64.

    Citation Envoyé par Liegecam64
    Si j’ai bien compris, lors de l’élaboration d’une base de données il faut commencer par sa modélisation.
    C'est ça.

    Comme l'indique Escartefigue, vous vous rendez dans le forum qui se trouve après :
    --> https://www.developpez.net/forums/f6...sation/schema/

    Vous posez vos questions et l'on va vous aider à la modélisation de votre base de données.

    Citation Envoyé par Liegecam64
    Seriez-vous disposé à m’aider dans cette réalisation.
    Désolé mais j'ai d'autres projets en cours qui me prennent beaucoup de temps.

    Citation Envoyé par Liegecam64
    dans votre message vous mentionnez que la formation MySQL du site OpenClassRooms inculque de mauvaises habitudes. Pouvez-vous me renseigner un tutoriel qui m’aiderait dans la réalisation de mon projet.
    J'ai apris l'administration des bases de données sur le tas. Je me suis formé avec des livres et en faisant beaucoup d'exercices.
    J'ai continué à apprendre, même dans ce forum, parfois en exposant ce que je croyais être vrai.

    En premier, commencez par apprendre ce que sont les formes normales.
    Comme le dit Escartefigue, c'est la principale source des problèmes que l'on rencontre.

    Citation Envoyé par Liegecam64
    Dans un premier temps, j’ai désinstallé mysql-installer-community-8.0.21.0 pour le réinstaller. Lors de son installation MySQL se place d’office dans le répertoire Programmes (x86).
    J'utilise la version mysql Community Server 8.0.21 :
    --> https://dev.mysql.com/downloads/mysql/

    Vous téléchargez "Windows (x86, 64 bits), archive ZIP". Après la décompression, vous déplacer le répertoire à l'endroit qu'il vous plait.
    De préférence, nommez ce répertoire "c:/mysql/mysql8.0.21/".
    A l'intérieur, vous devez avoir les répertoires "/bin", "/docs", "include", ...
    Vous devez créer le répertoire "/data", par l'utilitaire suivant (mysql-init.bat) :
    Code mysql :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    @echo off
    
    set PATH=.;c:\mysql\mysql8.0.20\bin;
    
    if exist c:\mysql\mysql8.0.20\data (rmdir /S /Q c:\mysql\mysql8.0.20\data)
    
    mysqld  --initialize-insecure  --log-error-verbosity=3  --log-error=c:\mysql\mysql8.0.20\logs\mysql_error.log
    
    pause
    exit

    Ne pas oublier de créer votre fichier "my.ini" qui doit se trouver dans le répertoire : "c:\mysql\mysql8.0.20\".

    Citation Envoyé par Liegecam64
    Lorsque je fais le code mysql select user(); j’obtiens "root" à gauche du "@".
    Vous avez utilisé ce compte "root" pour installer votre base de données.

    Citation Envoyé par Liegecam64
    Quel code mysql dois-je faire pour me rendre "phpmyadmin", à partir du compte "root".
    A prioir, vous n'avez que mysql.
    Vous devez tout faire en ligne de commande !
    Code bat :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
    @echo off
     
    setlocal enableDelayedExpansion
     
    chcp 1252 > nul
     
    set PATH=.;c:\mysql\mysql8.0.20\bin\;%PATH%
     
    SET FIC=%~nx0
    SET FIC=%FIC:bat=sql%
     
    @echo.
    mysql < %FIC%  --verbose  --force
     
    endlocal
    @echo.
    pause
    exit

    Ce batch, de nom "noel.bat" va se connecter à partir de ce que vous avez renseigné, par défaut, dans "my.ini".
    Par exemple :
    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
    # ==================== #
    #     MySql Client     #
    # ==================== #
     
    [client]
    port   = 3306
    socket = mysql
     
    # ----------------------- #
    #     access features     #
    # ----------------------- #
     
    host     = localhost
    user     = root
    password = root
     
    # --------------- #
    #     Charset     #
    # --------------- #
     
    default-character-set = latin1

    Autrement dit, par le compte "root". Si vous désirez accéder à un autre compte, modifiez la ligne :
    Code bat :Sélectionner tout -Visualiser dans une fenêtre à part
    mysql < %FIC%  --verbose  --force

    en ajoutant le compte et le mot de passe :
    Code bat :Sélectionner tout -Visualiser dans une fenêtre à part
    mysql < %FIC%  --verbose  --force   --host=localhost  --user=noel  --password=noel


    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

  8. #8
    Membre à l'essai
    Bonjour Artemus24 et Escartefigue
    Je vous remercie pour votre réponse et l’aide que vous m’apportez.
    Depuis votre dernier courrier j’ai installé à plusieurs reprises et effacé MySQL 8.0.21 dans un répertoire MySQL se trouvant à la racine C*:.
    Je n’arrive pas à trouver l’invite mysql.
    Voulez-vous bien m’aider s'il vous plait.


  9. #9
    Expert éminent sénior
    Salut liegecam64.

    Citation Envoyé par liegecam64
    Je n’arrive pas à trouver l’invite mysql.
    Quand on parle de l'invite, il s'agit de l'invite de commande de Windows.
    Cela se trouve dans Windows sous "Démarrer/executer/cmd".

    Pour exécuter la console mysql (en espérant que vous parliez de cela), vous devez lancer : "C:\mysql\mysql-8.0.21-winx64\bin\mysql.exe".

    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

###raw>template_hook.ano_emploi###