Array com MySQL [RESOLVIDO]

1. Array com MySQL [RESOLVIDO]

William Vasco Batista
dalua_wil

(usa Debian)

Enviado em 14/05/2021 - 10:59h

Bom dia galera,

Estou fazendo um script e não consegui achar um caso parecido com o que eu quero (ou posso ter achado e não entendi direito rsrs)

eu criei um script qua faz uma consulta SQL e preciso tratar esses dados em um loop de repetição "for". A consulta SQL é (simplificando) "select Nome, RG, CPF from clientes;"
A minha dúvida é, como eu coloco isso em um ARRAY para tratar as três informações (Nome, CPF e RG) de cada resultado SQL em um for?

Agradeço qualquer ajuda.


  


2. MELHOR RESPOSTA

Perfil removido
removido

(usa Nenhuma)

Enviado em 15/05/2021 - 16:16h

Acabei de ver que o post foi publicado na categoria de shell script, então a pergunta sobre "qual linguagem de script?" já está respondida! kkk

Enfim, cara, shell script não é uma boa linguagem para trabalhar com consultas em banco.

Considerando que o SGBD seja o MySQL, o que você vai precisar fazer, basicamente:
IFS=$'\n'

results=($(mysql --batch -N -u user -psenha banco -e 'select Nome, RG, CPF from clientes;'))

echo ${results[0]}


O parâmetro --batch serve para simplificar a saída, e o -N serve para ocultar o nome da coluna (Nome, RG, CPF, etc). O $results é o array com os dados da query;
echo ${results[0]}
# vai printar na mesma linha os dados do primeiro registro. Por ex: Ruan, 123456789, 123456789


Tu pode pegar os dados de NOME, RG, CPF, usando um cut/sed/awk.
nome="$(echo ${results[0]} | cut -f1)" # 'Ruan'

rg="$(echo ${results[0]} | cut -f2)" # '123456789'


Com isso, basta fazer um loop com o $results, para fazer a tratativa de dados...

3. Re: Array com MySQL [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 15/05/2021 - 15:31h


dalua_wil escreveu:

Bom dia galera,

Estou fazendo um script e não consegui achar um caso parecido com o que eu quero (ou posso ter achado e não entendi direito rsrs)

eu criei um script qua faz uma consulta SQL e preciso tratar esses dados em um loop de repetição "for". A consulta SQL é (simplificando) "select Nome, RG, CPF from clientes;"
A minha dúvida é, como eu coloco isso em um ARRAY para tratar as três informações (Nome, CPF e RG) de cada resultado SQL em um for?

Agradeço qualquer ajuda.


Qual linguagem de script?

Em PHP, por exemplo, esses dados do select já vem em um array, podendo utilizar um foreach para percorrer todos os elementos e tratar os dados.


4. Re: Array com MySQL [RESOLVIDO]

William Vasco Batista
dalua_wil

(usa Debian)

Enviado em 15/05/2021 - 19:14h


Opa! Obrigado pelas dicas, só vou conseguir fazer o teste na segunda-feira aí eu posto se deu certo


5. Re: Array com MySQL [RESOLVIDO]

William Vasco Batista
dalua_wil

(usa Debian)

Enviado em 17/05/2021 - 12:12h


ru4n escreveu:

Acabei de ver que o post foi publicado na categoria de shell script, então a pergunta sobre "qual linguagem de script?" já está respondida! kkk

Enfim, cara, shell script não é uma boa linguagem para trabalhar com consultas em banco.

Considerando que o SGBD seja o MySQL, o que você vai precisar fazer, basicamente:
IFS=$'\n'

results=($(mysql --batch -N -u user -psenha banco -e 'select Nome, RG, CPF from clientes;'))

echo ${results[0]}


O parâmetro --batch serve para simplificar a saída, e o -N serve para ocultar o nome da coluna (Nome, RG, CPF, etc). O $results é o array com os dados da query;
echo ${results[0]}
# vai printar na mesma linha os dados do primeiro registro. Por ex: Ruan, 123456789, 123456789


Tu pode pegar os dados de NOME, RG, CPF, usando um cut/sed/awk.
nome="$(echo ${results[0]} | cut -f1)" # 'Ruan'

rg="$(echo ${results[0]} | cut -f2)" # '123456789'


Com isso, basta fazer um loop com o $results, para fazer a tratativa de dados...



Fiz o teste aqui e funcionou, é exatamente o que eu precisava.

Muito obrigado pela ajuda.






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts