Awk uma mão na roda
O Awk é uma mão na roda quando queremos transformar um arquivo csv em uma sequência de comandos sql.
Linguagem de relatórios , ela executa o bloco de código ** { action } ** para cada linha do arquivo, o que torna ótimo para converter arquivos csv em sql.
A forma simples de usar o awk é:
1 | awk -F";" '{print "update tabela set valor=" $2 "where id =" $1 ";"}' arquivo.csv |
O operador de concatenação de strings em awk é o espaço em branco e $1 representa a primeira coluna.
O comando acima é para ser executado sobre um arquivo (arquivo.csv) com colunas separadas por ; , definido com o parâmetro -F, onde a primeira coluna tem o id e a segunda tem o valor.
Você também pode criar arquivo com código, abaixo segue um exemplo para tratar celulares.
Gerando um arquivo sql de um csv
Imagine o seguinte problema , você precisa atualizar uma tabela a partir de um arquivo csv que contém o celular e o cpf das pessoas.
Entretanto os dados estão sujos porque algunas números de celular tem ddd, outros tem apenas 8 digitos e vocẽ precisa limpar os dados.
Neste momento o awk brilha com este pequeno código você pode tratar este problema:
1 | { |
Para chamar o código:
1 | $ awk -F";" -f gerar-update-ddd.awk celulares.csv > udpate-celulares.sql |
As colunas do arquivo celulares.csv:
1 | cpf;nome;ddd;celular |
Caso queira pular você pode usar a variável NR (if (NR !=1 ) { action } ) ou usar o
tail celulares.csv -n+1 | awk …``` .