Préambule

Petite problématique rencontrée, un fichier CSV avec de très nombreuses colonnes à importer.

Solution

Le package csvkit permet de disposer de la commande csvsql. Cette dernière prend en paramètre un fichier CSV et le transforme en SQL.

csvsql -d , -e ISO-8859-15 monfichier.csv --insert --db "mysql://user:mdp@ip/name_database" -v --datetime-format "%d/%m/%Y %H:%M:%S" --tables nom_table

Quelques difficultés

  • Présence d’antislash (\) dans le fichier CSV, on va doubler ces derniers par un petit sed :
    sed -e 's/\\//' fichier_origine.csv > fichier_destination.csv
  • ImportError : You don’t appear to have the necessary database backend installed for connection string you’re trying to use. - Installation du package : python3-pymysql
  • Encodage :
    file fichier_destination.csv

    nous permet d’avoir l’encodage utilisé.

  • Date :
    Utiliser la commande date pour retrouver l’encodage utilisé pour les dates dans votre fichier CSV. Exemple : 28/05/2019 15:55:19
date +"%d/%m/%y %H:%M:%S"

Accueil > Linux > Développement > [MySQL - CSV] Créer une table de base de données à partir d’un CSV