Comment lister les avertissements de l'utilitaire 'mysqlimport'?


28

Pour commencer, il ne s'agit pas de charger des données depuis MySQL lui-même, mais d'utiliser l'outil de ligne de commande "mysqlimport".

Je l'utilise pour charger un CSV directement dans une table et j'ai besoin de voir les avertissements qu'il a générés. Je n'arrive pas à obtenir des avertissements à afficher avec verbose ni débogage activé. Des idées?

(MySQL 5.0.5)

Réponses:


31

Ce n'est pas possible avec mysqlimport, mais comme alternative, vous pouvez faire ce qui suit:

mysql --execute="LOAD DATA LOCAL INFILE '$WORKDIR/$table.csv' INTO TABLE $table FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '\"' IGNORE 1 LINES (listOfColumnNames); SHOW WARNINGS"

Remplacez listOfColumnNamespar une liste de colonnes séparée appropriée.

La magie est (comme Eduard l'a mentionné précédemment) est d'exécuter les commandes LOAD DATA INFILE et SHOW WARNINGS ensemble dans la même session, car mysqlimport ne fournit pas un moyen d'accéder directement aux avertissements.


Doux, merci! Je venais juste de commencer à écrire une déclaration comme celle-ci après avoir vu le commentaire d'Eduard. Merci! Merci
brink

Est-ce que cela fonctionne s'il tables.csvs'agit d'un fichier local (c'est-à-dire pas sur le serveur de la base de données)?
Raffi Khatchadourian du

les travaux suivants pour me créer le tableau d' abord , puis faire mysql -u root --execute="LOAD DATA LOCAL INFILE 'c:\\crp\\blah3.csv' INTO TABLE blah3 FIELDS TERMINATED BY ','; SHOW WARNINGS" whateverdbnameegcsv_db lié stackoverflow.com/questions/14127529/...
barlop

et peut ajouter, par exemple, sur utf8 mysql> LOAD DATA LOCAL INFILE 'c:\\crp\\blah5.csv' INTO TABLE blah5 CHARACTER SET UTF8 FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'; SHOW WARNINGS;comme mentionné stackoverflow.com/questions/4957900/…
barlop

un problème est que le code de sortie est toujours 0donc je suppose que vous devez analyser la sortie de la commande pour vérifier si l'importation a réussi lorsque ce qui précède est scripté (?)
pkaramol

5

Comme les autres l'ont dit, le vrai problème est que pour que SHOW WARNINGS fonctionne, vous devez être dans la même session connectée. mysqlimport se déconnecte de la session dès que l'importation est terminée, ce qui rend impossible la capture de ses avertissements dans sa version actuelle. Cela ressemble à une opportunité de faire don d'un patch. :)


1

Je n'ai trouvé aucun moyen d'imprimer des avertissements avec mysqlimport non plus. Mais comme mysqlimport ne fait que "LOAD DATA INFILE" pourquoi n'utilisez-vous pas la commande mysql pour importer les données suivies d'un "SHOW WARNINGS"?


Merci! Une sorte de mysqlimport irritant ne joue pas vraiment bien: /
brink

Utilisez les "AFFICHER LES AVERTISSEMENTS;" commande après "CHARGER".
Eduard Wirch
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.