# -*- coding: utf-8 mode: markdown -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8 ##@creator: jclain ##@created: 27/04/2016 03:18 ##@modifier: jclain ##@changecount: 1 ##@tags: ##@title: mysqlloadcsv {{{ mysqlloadcsv: Charger une table MySQL avec un fichier csv USAGE mysqlloadcsv [db.]table [fields...] [-- mysql options] db est le nom de la base de données table est le nom de la table à charger fields est la liste des colonnes. Si cette valeur est spécifiée, il faudra peut-être utiliser l'option -s pour ignorer le cas échéant la ligne des en-têtes dans le fichier en entrée. Sinon, les colonnes à utiliser sont calculées à partir du fichier en entrée. Dans les données en entrées, qui doivent être en UTF8, les conversions suivantes sont effectuées par MySQL: \0 --> \b --> \n --> \r --> \t --> \Z --> Ctrl+Z \N --> NULL OPTIONS -h, --host host -P, --port port -u, --user user -ppassword Informations de connexion à la base de données -C, --config CONFIG Prendre les informations de connexion depuis le fichier spécifié. Le fichier doit être de la forme host=HOST.TLD #post=3306 user=USER password=PASS #dbtable=DB.TABLE #fields=(FIELDS...) # Il est possible aussi de spécifier DB et TABLE séparément: #database=DB #table=TABLE Les variables port, dbtable et fields sont facultatives. Les valeurs définies dans ce fichier sont prioritaires par rapport à celles qui auraient été spécifiées sur la ligne de commande. Utiliser password=--NOT-SET-- s'il faut se connecter sans mot de passe Cette option peut être utilisée plusieurs fois, auquel cas les fichiers sont chargés dans l'ordre. --profile PROFILE La variable $PROFILE est définie avec la valeur spécifiée avant de sourcer les fichiers de configuration. Cela permet d'avoir des fichiers de configuration qui calculent dynamiquement les paramètres en fonction de la valeur du profil. -f, --input INPUT Fichier en entrée. Ne pas spécifier cette option ou utiliser '-' pour lire depuis l'entrée standard. -d, --auto-dbtable DB Spécifier la base de données avec laquelle se connecter. De plus, si le nom de la table n'est pas spécifié, prendre par défaut le nom de base du fichier spécifié avec l'option -f -s, --skip-lines NBLINES Nombre de lignes à sauter dans le fichier en entrée -n, --fake Ne pas effectuer l'opération. Afficher simplement la commande SQL. --run Forcer le lancement de l'opération. Utiliser cette option avec -A pour créer la table avec les paramètres analysés. -T, --truncate Vider la table avant d'effectuer le chargement -L, --load-data Charger les données avec la commande 'load data local'. C'est l'option par défaut. Le fichier est transmis tel quel à MySQL. -I, --insert-data Charger les données en générant des commandes 'insert into'. L'effet est en principe le même avec l'option -L (sauf que certains formats de date exotiques seront correctement importés). Cette option peut aussi être utilisée avec l'option -n pour générer une liste de commande à corriger et/ou adapter. -U, -k, --update-data KEY Au lieu de charger de nouvelles données, essayer de mettre à jour la table. KEY est le nom de la colonne qui est utilisée comme clé. Toutes les autres colonnes sont les nouvelles données à mettre à jour. Si aucune ligne ne correspond à une clé donnée, la mise à jour pour cette ligne est ignorée. Note: utiliser les options -T et -U ensemble n'a pas de sens, mais -T est quand même honoré. -Z, --null-value VALUE Avec les options -I et -U, considérer que NULL est représenté par la chaine spécifiée. Par défaut, utiliser \N -z, --null-is-empty Avec les options -I et -U, considérer que NULL est représenté par la chaine vide. Cette option est équivalente à -Z '' -t, --types [DEFAULT_TYPE,]FIELD:TYPE,... Spécifier pour chaque champ mentionné le type de donnée à forcer. Le type 'auto' signifie que le type est autodétecté. C'est la valeur par défaut. Les autres types valides sont 'str', 'int' et 'date' Cette option est ignorée avec l'option -L -A, --analyse Analyser les données et afficher une requête pour créer une table qui pourrait contenir ces données. Cette option implique --fake et affiche simplement la commande SQL. Pour lancer la commande SQL générée, il faut ajouter l'option --run APRES cette option }}}