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
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    juin 2016
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : Bénin

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : juin 2016
    Messages : 4
    Points : 3
    Points
    3

    Par défaut LOAD DATA ne marche pas

    Bonjour à tous ! C'est surement une question de débutant, mais croyez-moi, j'ai beaucoup cherché avant de poster mon problème.

    Voilà !! Dans ma base de données, j'ai une table pays qui contient l'id du pays, le nom du pays et sa superficie. Ces données sont toutes bien rangées dans une feuille excel au format csv. Pour les charger, j'essaie d'utiliser la commande LOAD DATA de toutes manières possibles (avec " ou ', \ ou /), je précise tous les arguments et j'ai essayé toutes les commandes de la documentation officielle de MySQL à ce effet, de même que celles trouvées sur différents forums dont celui-ci, mais rien à faire.




    Merci d'avance pour votre aide. je travaille avec mysql 5.7 en mode localhost.

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

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

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

    Informations forums :
    Inscription : avril 2002
    Messages : 5 801
    Points : 23 015
    Points
    23 015

    Par défaut

    Bonjour,

    Vous pouvez nous donner un exemple de commandes que vous testez et l'éventuel message d'erreur qui vous est renvoyé ?
    Depuis quel outil lancez-vous la commande ?
    Sous quel système d'exploitation est votre base de donnée ? Votre poste client ?

    Bref, il nous faut un peu plus d'informations pour pouvoir vous aider.
    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
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    juin 2016
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : Bénin

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : juin 2016
    Messages : 4
    Points : 3
    Points
    3

    Par défaut

    Merci pour la précision. j'ai constaté que sans utiliser la clause LOCAL j'ai une erreur qui précise que le schéma n'est pas sécurisé, je l'ai donc ajouter et j'utilise des ' au lieu de ", de même que / et pas \. Mais actuellement je me retrouve devant: ERROR 1300 (HY000): Invalid utf8 character string: 'C'.

    j'ajoute aussi mes récentes tentatives pour plus de clarté.

    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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    mysql> LOAD DATA INFILE "E:\Cours\sql\Test_valeurs_travaille\Pays_superficie.csv"
        -> INTO TABLE pays
        -> FIELDS TERMINATED BY ';' ENCLOSED BY ''
        -> LINES STARTING BY '' TERMINATED BY '\r\n'
        -> IGNORE 2 LINES;
    ERROR 1290 (HY000): The MySQL server is running with the --secure-file-priv option so it cannot execute this statement
    mysql> LOAD DATA LOCAL INFILE "E:\Cours\sql\Test_valeurs_travaille\Pays_superficie.csv"
        -> INTO TABLE pays
        -> FIELDS TERMINATED BY ';' ENCLOSED BY ''
        -> LINES STARTING BY '' TERMINATED BY '\r\n'
        -> IGNORE 2 LINES;
    ERROR 2 (HY000): File 'E:CourssqlTest_valeurs_travaillePays_superficie.csv' not found (Errcode: 2 - No such file or directory)
    mysql> LOAD DATA INFILE 'E:\Cours\sql\Test_valeurs_travaille\Pays_superficie.csv'
        -> INTO TABLE pays
        -> FIELDS TERMINATED BY ';' ENCLOSED BY ''
        -> LINES STARTING BY '' TERMINATED BY '\r\n'
        -> IGNORE 2 LINES;
    ERROR 1290 (HY000): The MySQL server is running with the --secure-file-priv option so it cannot execute this statement
    mysql> LOAD DATA LOCAL INFILE 'E:\Cours\sql\Test_valeurs_travaille\Pays_superficie.csv'
        -> INTO TABLE pays
        -> FIELDS TERMINATED BY ';' ENCLOSED BY ''
        -> LINES STARTING BY '' TERMINATED BY '\r\n'
        -> IGNORE 2 LINES;
    ERROR 2 (HY000): File 'E:CourssqlTest_valeurs_travaillePays_superficie.csv' not found (Errcode: 2 - No such file or directory)
    mysql> LOAD DATA INFILE 'E:/Cours/sql/Test_valeurs_travaille/Pays_superficie.csv'
        -> INTO TABLE pays
        -> FIELDS TERMINATED BY ';' ENCLOSED BY ''
        -> LINES STARTING BY '' TERMINATED BY '\r\n'
        -> IGNORE 2 LINES;
    ERROR 1290 (HY000): The MySQL server is running with the --secure-file-priv option so it cannot execute this statement
    mysql> LOAD DATA LOCAL INFILE 'E:/Cours/sql/Test_valeurs_travaille/Pays_superficie.csv'
        -> INTO TABLE pays
        -> FIELDS TERMINATED BY ';' ENCLOSED BY ''
        -> LINES STARTING BY '' TERMINATED BY '\r\n'
        -> IGNORE 2 LINES;
    ERROR 1300 (HY000): Invalid utf8 character string: 'Alg'
    mysql> LOAD DATA INFILE 'E:/Cours/sql/Test_valeurs_travaille/Pays_superficie.csv'
        -> INTO TABLE pays
        -> FIELDS TERMINATED BY ';' ENCLOSED BY ''
        -> LINES STARTING BY '' TERMINATED BY '\r\n'
        -> IGNORE 2 LINES;
    ERROR 1290 (HY000): The MySQL server is running with the --secure-file-priv option so it cannot execute this statement
    mysql> LOAD DATA LOCAL INFILE 'E:/Cours/sql/Test_valeurs_travaille/Pays_superficie.csv'
        -> INTO TABLE pays
        -> FIELDS TERMINATED BY ';' ENCLOSED BY ''
        -> LINES STARTING BY '' TERMINATED BY '\r\n'
        -> IGNORE 2 LINES;
    ERROR 1300 (HY000): Invalid utf8 character string: 'Alg'
    mysql> LOAD DATA LOCAL INFILE 'E:/Cours/sql/Test_valeurs_travaille/Pays_superficie.csv'
        -> INTO TABLE pays
        -> FIELDS TERMINATED BY ';' ENCLOSED BY ''
        -> LINES STARTING BY '' TERMINATED BY '\r\n'
        -> IGNORE 2 LINES;
    ERROR 1300 (HY000): Invalid utf8 character string: 'C'
    mysql> LOAD DATA LOCAL INFILE 'E:/Cours/sql/Test_valeurs_travaille/Pays_superficie.csv'
        -> INTO TABLE pays
        -> FIELDS TERMINATED BY ';' ENCLOSED BY ''
        -> LINES STARTING BY '' TERMINATED BY '\r\n'
        -> IGNORE 2 LINES;
    ERROR 1300 (HY000): Invalid utf8 character string: 'C'
    mysql> LOAD DATA LOCAL INFILE 'E:/Cours/sql/Test_valeurs_travaille/Pays_superficie.csv'
        -> INTO TABLE pays
        -> FIELDS TERMINATED BY ';' ENCLOSED BY ''
        -> LINES STARTING BY '' TERMINATED BY '\r\n'
        -> IGNORE 2 LINES;
    ERROR 1300 (HY000): Invalid utf8 character string: 'C'
    Merci d'avance

  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
    4 034
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    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 : 4 034
    Points : 12 113
    Points
    12 113

    Par défaut

    Salut à tous.

    Mon exemple concerne Windows et non linux. Cela a de l'importance car on interprète pas de la même façon les fins de ligne.
    Voici un exemple basique de fichier excel à charger dans une table MySql.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    \N;"10/5/2014 15:33:17";"web"
    125;"15/5/2014 23:53:59";"alpha\; beta\; gamma"
    -247;\N;"zéro"
    Le "\N" exprime un NULL.
    Et voici comment je charge le fichier Excel dans une table MySql :
    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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    --------------
    SET AUTOCOMMIT = 0
    --------------
     
    --------------
    START TRANSACTION
    --------------
     
    --------------
    DROP DATABASE IF EXISTS `base`
    --------------
     
    --------------
    CREATE DATABASE IF NOT EXISTS `base`
            DEFAULT CHARACTER SET `latin1`
            DEFAULT COLLATE       `latin1_general_ci`
    --------------
     
    --------------
    DROP TABLE IF EXISTS trav
    --------------
     
    --------------
    CREATE TABLE trav (
      col_num   integer      null default null,
      col_date  datetime     null default null,
      col_char  varchar(255) null default null
    ) ENGINE=InnoDB
      DEFAULT CHARSET=`latin1` COLLATE=`latin1_general_ci`
      ROW_FORMAT=COMPRESSED
    --------------
     
    --------------
    LOAD DATA LOCAL INFILE 'fichier.txt'
         INTO TABLE `trav`
         CHARACTER SET latin1
         FIELDS TERMINATED            BY ';'
                OPTIONALLY ENCLOSED   BY '\"'
                ESCAPED               BY '\\'
         LINES  TERMINATED            BY '\r\n'
         IGNORE 0 LINES
         (@F1, @F2, @F3)
         set col_num  =             trim(@F1),
             col_date = str_to_date(trim(@F2), '%d/%c/%Y %H:%i:%s'),
             col_char =             trim(@F3)
    --------------
     
    --------------
    select * from trav
    --------------
     
    +---------+---------------------+--------------------+
    | col_num | col_date            | col_char           |
    +---------+---------------------+--------------------+
    |    NULL | 2014-05-10 15:33:17 | web                |
    |     125 | 2014-05-15 23:53:59 | alpha; beta; gamma |
    |    -247 | NULL                | zéro               |
    +---------+---------------------+--------------------+
    --------------
    COMMIT
    --------------
     
    --------------
    SET AUTOCOMMIT = 0
    --------------
     
    Appuyez sur une touche pour continuer...
    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

Discussions similaires

  1. Le REPLACE de LOAD DATA INFILE ne marche pas !
    Par kiradeus dans le forum Requêtes
    Réponses: 4
    Dernier message: 15/11/2012, 10h21
  2. load sqlite ne marche pas
    Par stade13 dans le forum Zend_Db
    Réponses: 3
    Dernier message: 03/08/2012, 00h13
  3. Load Form ne marche pas
    Par Chipss dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 31/08/2010, 10h52
  4. jquery fonction load() ne marche pas comme voulu
    Par lemirandais dans le forum jQuery
    Réponses: 4
    Dernier message: 16/06/2009, 09h47
  5. [Système] loadLibrary ne marche pas mais Load oui
    Par fredericL dans le forum APIs
    Réponses: 5
    Dernier message: 26/05/2004, 15h32

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