Melhor abordagem para processar automaticamente .csv - MySQL [closed]

-1

Bata no local apropriado, se necessário. Não tenho certeza de onde posso obter a melhor resposta.

Eu preciso criar um aplicativo de relatórios e gostaria de fazê-lo com o Ubuntu, se possível. Os dados de origem vêm de um aplicativo baseado em dispositivo que pode periodicamente enviar por FTP um arquivo de log delimitado para um local designado. Eu gostaria de desenvolver um mecanismo para usar esses dados para atualizar um banco de dados MySQL (a ser criado) que será usado para construir relatórios programados que eventualmente são enviados por e-mail para vários grupos de distribuição (como PDFs do Excel formatados). Nós temos os smarts internos para criar as várias consultas do MySQL (e para projetar o banco de dados), mas não temos o Linux / Ubuntu para saber como determinar a melhor abordagem. Estamos fazendo algo semelhante para outro aplicativo no lado do Windows usando o Crystal Reports, mas, dada a necessidade de distribuir esse aplicativo, gostaríamos de não ter que lidar com os custos de licenciamento do Windows, etc ...

Preciso aconselhar sobre as ferramentas / abordagens adequadas, mas também a recomendação de onde posso encontrar recursos qualificados que possam fazer isso de maneira eficaz, sem custos significativos.

    
por Kendor 06.02.2012 / 15:22

1 resposta

2

Você pode analisar comandos a partir da linha de comando com a seguinte sintaxe:

mysql -u {user} -p{password} {database} <{text.file}

Isto irá analisar todas as linhas de {text.file} para {database}. O arquivo de texto precisa conter instruções válidas do MySQL e a senha é mostrada em texto simples em ps , então você pode querer colocar isso em my.cnf (a segurança vem primeiro).

2 métodos ...

  • Você pode usar o comando carregamento de dados do MySQL (veja o link para mais opções):

    LOAD DATA [LOW_PRIORITY | CONCURRENT] [LOCAL] INFILE {text2.file} INTO TABELA {tabela}

    dentro do text.file para inserir um arquivo de texto em uma tabela. Isso provavelmente substitui as linhas existentes para que você precise criar novos arquivos toda vez. LOAD DATA é muito muito rápido. Caminho mais curto (one-liner do comentário de Cesium):

    mysql -u {user} -p {pass} -e "LOAD DATA {rest of command}" {db}
    
  • Você pode colocar lotes de INSERT INTO no text.file. Isso é mais lento que um LOAD DATA, mas pode ser mais fácil de implementar.

por Rinzwind 06.02.2012 / 15:44