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

Outils MySQL Discussion :

LOAD DATA ne marche pas


Sujet :

Outils MySQL

  1. #1
    Candidat au Club
    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
    Rédacteur/Modérateur

    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
    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. ###raw>post.musername###
    Expert éminent sénior
    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...


    @+
      0  0

###raw>template_hook.ano_emploi###