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
    Candidat au Club
    Inscrit en
    février 2010
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : février 2010
    Messages : 5
    Points : 2
    Points
    2

    Par défaut Importer fichier en SQL

    Bonjour, je cherche simplement à executer un fichier SQL local à partir d'une "requête SQL".

    Une requête du genre :
    LOAD DATA INFILE "fichier.sql"

    Mais bien sur pas cette commande car elle ne fait que lire le fichier ligne par ligne.

    Il doit forcément y'avoir un moyen d’exécuter un fichier SQL en passant par une requête ?
    (Sans être obligé d'utiliser le shell bien sur, mysql < fichier.sql, ou source fichier.sql, etc...)

    Merci si quelqu'un a la solution qui je l'espère existe...

  2. #2
    ced
    ced est actuellement connecté
    Rédacteur/Modérateur

    Avatar de ced
    Homme Profil pro
    Gestion de bases de données techniques
    Inscrit en
    avril 2002
    Messages
    5 778
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Gestion de bases de données techniques
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : avril 2002
    Messages : 5 778
    Points : 22 954
    Points
    22 954

    Par défaut

    Bonjour,

    J'en déduis que vous êtes sous MySQL... ?
    Pour faire ça depuis une commande SQL, ça se fait avec SOURCE.

    Je ne vois pas d'autre façon de faire, sauf en ligne de commandes. Sinon, précisez la façon dont vous voudriez vous y prendre...
    Rédacteur / Modérateur SGBD et R
    Mes tutoriels et la FAQ MySQL

    ----------------------------------------------------
    Pensez aux balises code et au tag
    Une réponse vous a plu ? N'hésitez pas à y mettre un
    Je ne réponds pas aux questions techniques par message privé, les forums sont là pour ça

  3. #3
    Candidat au Club
    Inscrit en
    février 2010
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : février 2010
    Messages : 5
    Points : 2
    Points
    2

    Par défaut

    Ok il n'y a donc pas de moyen d'importer mon "Fichier.SQL" en ne passant par exemple que par cet écran phpMyAdmin :
    Nom : phpmyadmin_mysql_editor.png
Affichages : 55
Taille : 19,3 Ko

    La seule solution si je ne veux pas utiliser le shell (et pas copier/coller à chaque fois le contenu du Fichier.SQL) serait de transformer mon fichier SQL en ne gardant que les lignes avec données, et les récupérer avec "LOAD DATA LOCAL INFILE" ?

    J'aurais pourtant pensé qu'une fonction d'ouverture et d'execution d'un fichier SQL était la base.

  4. #4
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    février 2011
    Messages
    3 554
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : février 2011
    Messages : 3 554
    Points : 11 085
    Points
    11 085

    Par défaut

    Salut PoOoOoZ.

    Que contient votre fichier SQL ?

    Citation Envoyé par PoOoOoZ
    Mais bien sur pas cette commande car elle ne fait que lire le fichier ligne par ligne.
    Pourquoi pas cette commande ?

    Un "load data local infile" est destiné à charger le contenu d'un fichier ".csv" (Excel) dans une table mysql.
    C'est une mise en forme de champs, encadré par des guillemets et séparées par des virgules ou point-virgules.
    --> https://dev.mysql.com/doc/refman/8.0/en/load-data.html

    Citation Envoyé par PoOoOoZ
    Il doit forcément y avoir un moyen d’exécuter un fichier SQL en passant par une requête ?
    Si votre fichier est du type ".SQLl", vous devez utiliser la commande "mysql" pour que son contenu soit exécuté.

    Un fichier SQL contient la création d'une base de données, des table, des insertions, des déclencheurs (triggers), des procédures stockées, des évènements, ...
    Êtes-vous certain que vous parlez bien d'un fichier ".SQL" et pas autre chose ?

    Citation Envoyé par PoOoOoZ
    Ok il n'y a donc pas de moyen d'importer mon "Fichier.SQL" en ne passant par exemple que par cet écran phpMyAdmin :
    Ce que vous montrez dans phpmyadmin est une requête "select * from wps_posts;".
    Si vous désirez charger un fichier ".SQL", vous l'auriez fait en passant par la commande "import" de phpmyyadmin.
    A priori, vous ne parlez pas la même chose que ce que nous comprenons.

    Il serait plus judicieux de nous donner un exemple avec jeu d'essai et ce que vous désirez faire ou obtenir et dans quel contexte.

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

  5. #5
    Candidat au Club
    Inscrit en
    février 2010
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : février 2010
    Messages : 5
    Points : 2
    Points
    2

    Par défaut

    Je sais que je peut passer par l'onglet "IMPORT" :
    Nom : Capture d’écran 2018-03-12 à 09.09.15.png
Affichages : 48
Taille : 92,4 Ko

    Citation Envoyé par Artemus24 Voir le message
    Ce que vous montrez dans phpmyadmin est une requête "select * from wps_posts;".
    Si vous désirez charger un fichier ".SQL", vous l'auriez fait en passant par la commande "import" de phpmyyadmin.
    J'ai juste pris la première image sur google montrant l'endroit d'ou je voulais importer mon fichier SQL, voici mon screen qui vient de mon écran cette fois :
    Nom : CAPTURE.png
Affichages : 51
Taille : 59,0 Ko
    Je vois qu'il existe une commande IMPORT qui m'a l'air adapté, mais je ne trouve nul part comment elle fonctionne ?
    (Je désire donc simplement executer l'action possible du SCREEN 1 à partir du SCREEN 2...)

    Sinon au pire je sais que je peux récupérer juste les lignes de données de mon SQL qui ne contient au final que quelque instructions simples avec des "ON DUPLICATE KEY UPDATE" par ci par la, mais ça serait plus simple que je puisse l'executer avec une "SQL Query".

  6. #6
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    février 2011
    Messages
    3 554
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : février 2011
    Messages : 3 554
    Points : 11 085
    Points
    11 085

    Par défaut

    Salut PoOoOoZ.

    Vous n'avez pas répondu à ma question :
    Citation Envoyé par Artemus24
    Que contient votre fichier SQL ?
    Voici un exemple de contenu d'un fichier ".SQL".
    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
    --
    -- Structure de la table `tab_billets`
    --
     
    DROP TABLE IF EXISTS `tab_billets`;
     
    CREATE TABLE IF NOT EXISTS `tab_billets` (
      `id`    int(11) NOT NULL DEFAULT '0',
      `date`  date        NULL DEFAULT NULL,
      `time`  time        NULL DEFAULT NULL,
      `titre` text COLLATE latin1_general_ci NOT NULL,
      `texte` text COLLATE latin1_general_ci NOT NULL,
      UNIQUE KEY `Clef` (`id`,`date`,`time`)
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci;
     
    --
    -- Vider la table avant d'insérer `tab_billets`
    --
     
    TRUNCATE TABLE `tab_billets`;
     
    --
    -- Contenu de la table `tab_billets`
    --
     
    INSERT INTO `tab_billets` (`id`, `date`, `time`, `titre`, `texte`) VALUES
    (1, '2013-11-13', '15:33:17', 'Comment créer un blog', 'Essai de la création d''un blog à partir de la saisie directe dans la table MySql.'),
    (1, '2013-11-13', '16:05:33', '', 'En fait, la saisie est très simple et ne nécessite aucune particularité pour le faire.'),
    (1, '2013-11-13', '16:45:53', '', 'N''empêche que l''on devra créer une page HTML destinée à la saisie des billets. Cela sera quand même plus simple !'),
    (5, '2013-11-11', '00:40:25', 'Mon premier billet !', 'le texte de mon premier billet<br /> <a href="#">ceci est un lien</a><br />\r\n<img src="Images/email.png" alt="icone email" />');
    Citation Envoyé par PoOoOoZ
    Je vois qu'il existe une commande IMPORT qui m'a l'air adaptée, mais je ne trouve nulle part comment elle fonctionne ?
    Il n'existe pas de commande "import" ou "export" sous mysql.
    Dans le cas de l'import, il s'agit de la commande "mysql".
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mysql --user root  --password toor  --host localhost  --database test <  fichier.sql;
    Dans le cas de l'export, il s'agit de la commande "mysqldump".
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mysqldump --no-create-db  --opt  --databases test  --result-file=fichier.sql;
    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

  7. #7
    Candidat au Club
    Inscrit en
    février 2010
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : février 2010
    Messages : 5
    Points : 2
    Points
    2

    Par défaut

    Ok mais il n'y a pas de moyen de faire un équivalent de la commande :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mysql --user root  --password toor  --host localhost  --database test <  fichier.sql
    Dans la fenetre SQL QUERY dont j'ai mis le screen ?
    Je n'ai pas le fichier sous la main mais il contient juste quelque insert, des "on duplicate key update" pour remplacer uniquement la colonne contenant les images.

    Mais j'ai trouvé une solution, je n'ai laissé pour l'instant que les lignes avec les données (en ayant enlevé les "()") et rajouté mes on duplicate key update à chaque fois que nécessaire, en utilisant LOAD DATA LOCAL INFILE.

Discussions similaires

  1. Import fichiers dans sql server 2000
    Par Mygush dans le forum MS SQL-Server
    Réponses: 2
    Dernier message: 18/04/2012, 15h14
  2. [importer fichier sql]
    Par maniolo dans le forum Oracle
    Réponses: 3
    Dernier message: 13/06/2006, 19h07
  3. Update de plusieurs tables, import fichier csv sql loader
    Par fusuke dans le forum SQL*Loader
    Réponses: 2
    Dernier message: 18/05/2006, 15h08
  4. Importation fichier .sql
    Par Mevil dans le forum PostgreSQL
    Réponses: 5
    Dernier message: 20/04/2006, 11h48
  5. [SQL Server 2000] erreur lors importation fichier excel
    Par Abydos Business Group dans le forum MS SQL-Server
    Réponses: 1
    Dernier message: 07/03/2006, 09h24

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