Como listar avisos do utilitário 'mysqlimport'?

28

Para começar, não se trata de carregar dados do próprio MySQL, mas usando a ferramenta de linha de comando "mysqlimport".

Estou usando-o para carregar um CSV diretamente em uma tabela e preciso ver os avisos gerados. Não consigo receber avisos para exibir com detalhes ou depuração ativados. Alguma ideia?

(MySQL 5.0.5)

beira
fonte

Respostas:

31

Não é possível com o mysqlimport, no entanto, como alternativa, você pode fazer o seguinte:

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

Substitua listOfColumnNamespor uma lista separada apropriada de colunas.

A mágica é (como Eduard mencionou anteriormente) é executar os comandos LOAD DATA INFILE e SHOW WARNINGS juntos na mesma sessão, pois o mysqlimport não fornece uma maneira de obter os avisos diretamente.

shollyman
fonte
Sweet, thank you! I had just begun writing a statement like this after seeing Eduard's comment. Thanks yo! Thanks
brink
Isso funciona se tables.csvfor um arquivo local (ou seja, não estiver no servidor do banco de dados)?
Raffi Khatchadourian
os seguintes trabalhos para me criar a tabela primeiro e depois fazer mysql -u root --execute="LOAD DATA LOCAL INFILE 'c:\\crp\\blah3.csv' INTO TABLE blah3 FIELDS TERMINATED BY ','; SHOW WARNINGS" whateverdbnameegcsv_db relacionado stackoverflow.com/questions/14127529/...
barlop
e pode adicionar, por exemplo, sobre utf8, mysql> LOAD DATA LOCAL INFILE 'c:\\crp\\blah5.csv' INTO TABLE blah5 CHARACTER SET UTF8 FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'; SHOW WARNINGS;como mencionado stackoverflow.com/questions/4957900/…
barlop 24/10/16
um problema é que o código de saída é sempre, 0portanto, acho que você precisa analisar a saída do comando para verificar se a importação foi bem-sucedida quando o script acima foi escrito (?)
pkaramol em 14/02
5

Como os outros disseram, o verdadeiro problema é que, para que o SHOW WARNINGS funcione, você deve estar na mesma sessão conectada. O mysqlimport se desconecta da sessão assim que termina a importação, impossibilitando a captura de seus avisos na versão atual. Parece uma oportunidade de doar um patch. :)

Vinny
fonte
1

Também não encontrei nenhuma maneira de imprimir avisos com o mysqlimport. Mas como o mysqlimport não faz nada além de "LOAD DATA INFILE", por que você não usa o comando mysql para importar os dados seguidos por um "SHOW WARNINGS"?

Eduard Wirch
fonte
Obrigado! Tipo de mysqlimport irritante realmente não é legal: /
brink
Use o "MOSTRAR AVISOS;" comando após "LOAD".
Eduard Wirch