Partage
  • Partager sur Facebook
  • Partager sur Twitter

Importer des données avec MySql

Importer des données en lignes de commande

Sujet résolu
    9 septembre 2010 à 10:40:53

    Bonjour,
    Je galère depuis hier, je me tourne vers vous afin de trouver une solution
    Je désire importer des données à partir d'un fichier csv dans une table de ma BDD.
    J'utilise WAMP.
    La table à charger les données a le même nom que mon fichier .csv.
    Le fichier .csv se trouve dans le répertoire workspace.
    J'utilise la fenêtre DOS pour cela, je me place dans le dossier workspace et je lance mon script :

    C:\Documents and Settings\All Users\workspace>C:/wamp/bin/mysql/mysql5.1.36/bin/mysqlimport --delete --local --fields-optionally-enclosed-by='"' --fields-terminated-by=';' --lines-terminated-by='\n' --user=root maBase monfichier.csv


    Fonchier .csv est bien entouré par des ' " '
    Chaque champ se termine bien par : ;

    Lorsque je valide j'ai les infos ci dessous qui s'affichent mais la table reste désespérémment vide :

    C:/wamp/bin/mysql/mysql5.1.36/bin/mysqlimport  Ver 3.7 Distrib 5.1.36, for Win32
     (ia32)
    Copyright 2000-2008 MySQL AB, 2008 Sun Microsystems, Inc.
    This software comes with ABSOLUTELY NO WARRANTY. This is free software,
    and you are welcome to modify and redistribute it under the GPL license
    
    Loads tables from text files in various formats.  The base name of the
    text file must be the name of the table that should be used.
    If one uses sockets to connect to the MySQL server, the server will open and
    read the text file directly. In other cases the client will open the text
    file. The SQL command 'LOAD DATA INFILE' is used to import the rows.
    
    Usage: C:/wamp/bin/mysql/mysql5.1.36/bin/mysqlimport [OPTIONS] database textfile
    ...
    Default options are read from the following files in the given order:
    C:\WINDOWS\my.ini C:\WINDOWS\my.cnf C:\my.ini C:\my.cnf C:\wamp\bin\mysql\mysql5
    .1.36\my.ini C:\wamp\bin\mysql\mysql5.1.36\my.cnf
    The following groups are read: mysqlimport client
    The following options may be given as the first argument:
    --print-defaults        Print the program argument list and exit
    --no-defaults           Don't read default options from any options file
    --defaults-file=#       Only read default options from the given file #
    --defaults-extra-file=# Read this file after the global files are read
      --character-sets-dir=name
                          Directory where character sets are.
      --default-character-set=name
                          Set the default character set.
      -c, --columns=name  Use only these columns to import the data to. Give the
                          column names in a comma separated list. This is same as
                          giving columns to LOAD DATA INFILE.
      -C, --compress      Use compression in server/client protocol.
      -#, --debug[=name]  Output debug log. Often this is 'd:t:o,filename'.
      --debug-check       Check memory and open file usage at exit.
      --debug-info        Print some debug info at exit.
      -d, --delete        First delete all rows from table.
      --fields-terminated-by=name
                          Fields in the textfile are terminated by ...
      --fields-enclosed-by=name
                          Fields in the importfile are enclosed by ...
      --fields-optionally-enclosed-by=name
                          Fields in the i.file are opt. enclosed by ...
      --fields-escaped-by=name
                          Fields in the i.file are escaped by ...
      -f, --force         Continue even if we get an sql-error.
      -?, --help          Displays this help and exits.
      -h, --host=name     Connect to host.
      -i, --ignore        If duplicate unique key was found, keep old row.
      --ignore-lines=#    Ignore first n lines of data infile.
      --lines-terminated-by=name
                          Lines in the i.file are terminated by ...
      -L, --local         Read all files through the client.
      -l, --lock-tables   Lock all tables for write (this disables threads).
      --low-priority      Use LOW_PRIORITY when updating the table.
      -p, --password[=name]
                          Password to use when connecting to server. If password is
                          not given it's asked from the tty.
      -W, --pipe          Use named pipes to connect to server.
      -P, --port=#        Port number to use for connection or 0 for default to, in
                          order of preference, my.cnf, $MYSQL_TCP_PORT,
                          /etc/services, built-in default (3306).
      --protocol=name     The protocol of connection (tcp,socket,pipe,memory).
      -r, --replace       If duplicate unique key was found, replace old row.
      --shared-memory-base-name=name
                          Base name of shared memory.
      -s, --silent        Be more silent.
      -S, --socket=name   Socket file to use for connection.
      --ssl               Enable SSL for connection (automatically enabled with
                          other flags). Disable with --skip-ssl.
      --ssl-ca=name       CA file in PEM format (check OpenSSL docs, implies
                          --ssl).
      --ssl-capath=name   CA directory (check OpenSSL docs, implies --ssl).
      --ssl-cert=name     X509 cert in PEM format (implies --ssl).
      --ssl-cipher=name   SSL cipher to use (implies --ssl).
      --ssl-key=name      X509 key in PEM format (implies --ssl).
      --ssl-verify-server-cert
                          Verify server's "Common Name" in its cert against
                          hostname used when connecting. This option is disabled by
                          default.
      --use-threads=#     Load files in parallel. The argument is the number of
                          threads to use for loading data.
      -u, --user=name     User for login if not current user.
      -v, --verbose       Print info about the various stages.
      -V, --version       Output version information and exit.
    
    Variables (--variable-name=value)
    and boolean options {FALSE|TRUE}  Value (after reading options)
    --------------------------------- -----------------------------
    character-sets-dir                (No default value)
    default-character-set             latin1
    columns                           (No default value)
    compress                          FALSE
    debug-check                       FALSE
    debug-info                        FALSE
    delete                            TRUE
    fields-terminated-by              (No default value)
    fields-enclosed-by                (No default value)
    fields-optionally-enclosed-by     '' --fields-terminated-by=';'  --user=root@loc
    alhost  laredoute shopbotLaRedoute.csv
    fields-escaped-by                 (No default value)
    force                             FALSE
    host                              (No default value)
    ignore                            FALSE
    ignore-lines                      0
    lines-terminated-by               (No default value)
    local                             TRUE
    lock-tables                       FALSE
    low-priority                      FALSE
    port                              3306
    replace                           FALSE
    shared-memory-base-name           (No default value)
    silent                            FALSE
    socket                            /tmp/mysql.sock
    ssl                               FALSE
    ssl-ca                            (No default value)
    ssl-capath                        (No default value)
    ssl-cert                          (No default value)
    ssl-cipher                        (No default value)
    ssl-key                           (No default value)
    ssl-verify-server-cert            FALSE
    use-threads                       0
    user                              (No default value)
    verbose                           FALSE


    Quelqu'un d'entre vous aurait une solution.

    Merci

    Anka
    • Partager sur Facebook
    • Partager sur Twitter
      9 septembre 2010 à 10:59:12

      Bizarre, il fait comme si tu n'avais pas précisé d'options...
      Tu as moyen de lancer une requête LOAD INTO INFILE sur ta base ?
      http://www2.nl.freebsd.org/software/my [...] oad-data.html
      • Partager sur Facebook
      • Partager sur Twitter
      Ce n'est pas parce que vous ne savez pas vous servir d'un marteau qu'il faut planter des clous au tournevis.
        9 septembre 2010 à 11:44:56

        :) Merci nightmat
        Je suis venu pour vous dire que j'ai trouvé une réponse et voilà que tu me parles aussi de LOAD DATA LOCAL INFILE

        Pour ceux qui sont intéressés afin de charger une table d'une BDD à partir d'un fichier .csv, contenant plus de 20 000 lignes

        1. J'ai créé un fichier appelé : Documents And Settings/all Users /workspace/requete.sql dans lequel j'ai mis le code suivant :

        LOAD DATA LOCAL INFILE 'maTable.csv' INTO TABLE maTable FIELDS 	TERMINATED BY ';' ENCLOSED BY '"'ESCAPED BY '\\' LINES TERMINATED BY '\n';
        


        2. Dans la fenêtre DOS j'ai entré le code ci-dessous :

        C:\Documents and Settings\All Users\workspace>C:/wamp/bin/mysql/mysql5.1.36/bin/
        mysql -u root -p maBase < requete.sql


        Le tour est joué. Plus de 20 000 lignes insérées dans la table en moins de 30 secondes : :)
        • Partager sur Facebook
        • Partager sur Twitter

        Importer des données avec MySql

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown