O IDEAGRI possui uma ferramenta que permite a importação de novos animais utilizando planilhas. Como sabemos que eventualmente nossos clientes podem adquirir animais de produtores que também são usuários do sistema IDEAGRI, decidimos criar roteiros de importação para facilitar a migração de animais nestes casos, fazendo o uso dessa valiosa ferramenta de importação.

 

 

O processo será realizado com a utilização de consultas SQL. Clique aqui para acessar um vídeo que fornece mais detalhes sobre as Consultas SQL e sua forma de utilização.

As consultas deverão ser utilizadas no banco de origem dos animais. Após a execução e geração dos arquivos, eles poderão ser importados para o banco de destino. Abaixo, separamos cada etapa que deve ser realizada para que a importação possa ser realizada.

É importante notar que, na maioria dos casos, edições no corpo da consulta SQL serão necessárias. Você encontrará, em cada etapa, instruções relacionadas às edições necessárias.

 

Observações importantes:

  • Os partos anteriores que não ocorreram na fazenda não terão quaisquer detalhes, visto que o intuito é, unicamente, trazer um histórico das datas e quantidades de partos das matrizes. Vamos arbitrar que os partos foram de touros de raça ‘Composto’, apenas porque essa informação é obrigatória.
  • Os reprodutores utilizados na última tentativa dos animais serão importados como touros externos.
  • Caso a última tentativa seja do tipo "Transferência de embrião", ela será importada como uma cobertura, utilizando a raça do reprodutor do cruzamento da TE.

 

Sumário

Passo 1 – Obter a lista de cdanimais dos animais que serão importados e separar com “,”

Passo 2 – Obter a lista de reprodutores que foram usados na reprodução destes animais e importar

Passo 3 –  Obter dados apenas dos reprodutores e importar

Passo 4 – Obter dados apenas dos animais, com reprodução e importar

Passo 5– Obter os controles leiteiros e importar

Passo 6 – Obter as pesagens corporais e importar

Importação

 


 

Passo 1 – Obter a lista de cdanimais dos animais que serão importados

 

Esta é a SQL que deverá ser utilizada:

Select cdanimal from animal where numero in ('1001','1002','1003')

 

Coloque, onde está marcado de verde, os números dos animais que deverão ser buscados. Mantenha as aspas simples no início e fim de cada número, e mantenha, também, as vírgulas para separar cada animal. Os dados destacados em verde correspondem aos números dos animais e devem ser trocados pela sua relação de números. Os exemplos acima são meramente ilustrativos. 

Coloque a sua relação e execute a consulta para obter a lista dos cdsanimais na fazenda de origem. Depois de gerar a lista, separe os cdanimais obtidos por vírgula. Neste caso, não será necessário utilizar as aspas simples.

  • Exemplo: 55,99,200

Esses cdanimais serão utilizados em outras consultas em etapas posteriores. Sempre que você ver a cor verde, é um sinal para substituir o conteúdo marcado por ela pelos cdsanimais obtidos nesse passo aqui (passo 1).

Recomendamos que seja criado um arquivo (um bloco de notas, por exemplo) para que você possa ir armazenando este tipo de informação nele.

 


 

Passo 2 – Obter a lista de reprodutores que foram usados na reprodução destes animais

 

Esta é a SQL que deverá ser utilizada:

Select distinct cdreprodutor from reproducao where cdanimal in (LISTA DE CDSANIMAIS DOS ANIMAIS QUE SERÃO IMPORTADOS) and cdreprodutor is not null

 

 

Coloque, onde está marcado de verde, os cdsanimais obtidos no passo 1. A consulta buscará os códigos dos reprodutores. 

  • Exemplo: 5394,5396,5404.

Esses códigos serão utilizados em outras consultas em etapas posteriores. Sempre que você ver a cor amarela, é um sinal para substituir o conteúdo marcado por ela pelos cdsanimais obtidos nesse passo aqui (passo 2).

 


 

Passo 3 –  Obter dados dos reprodutores - Salve o arquivo como '01re.csv'

A partir deste passo, utilizaremos nomenclaturas para salvar as informações geradas pelas consultas SQL. Com isso, será mais simples saber, depois, qual a ordem de importação que deverá ser seguida.

Outro detalhe importante é que utilizaremos uma concatenação para evitar conflitos com animais já existentes no banco de dados de destino. 

Nas consultas, colocamos o código de exemplo '_ZZZ' . Ele deverá ser substituído para uma abreviação do nome da Fazenda de origem. Se ela se chama Santa Clara, por exemplo, basta trocar _ZZZ por _SCL).

Obs: O número do animal será colocado, também, no campo 'Nome', quando não existir nome informado no cadastro do banco de origem.

select distinct
an.cdanimal || '_ZZZ' as numero
, coalesce(an.nome, an.numero) as nome
, coalesce(an.nomecompleto, an.nome, an.numero) as nome_completo
, 'M' as sexo
, (select grausangue from sp_calculagrausangue(an.cdanimal)) as grau_sangue
from
animal an
left join animal mae on mae.cdanimal = an.cdmae
left join animal pai on pai.cdanimal = an.cdpai
left join peso pnas on pnas.cdpeso =
(select first 1 re.cdpeso from peso re where re.cdanimal = an.cdanimal and re.cdtipopeso in (1,2) and re.dtpeso = an.dtnascimento)
left join peso pent on pent.cdpeso =
(select first 1 re.cdpeso from peso re where re.cdanimal = an.cdanimal and re.cdtipopeso = 6 and re.dtpeso = an.dtentfazenda)
left join sp_categoriaanimal(current_date, 'cdanimal = ' || an.cdanimal) spcat on 1 = 1
left join categoria cat on cat.cdcategoria = spcat.cbasica
where an.cdanimal in (LISTA DE CDSANIMAIS DOS REPRODUTORES)

 

 

Lembre-se de, na marcação em amarelo, informar a lista de códigos que você obteve no passo 2 (separados por vírgulas).


Mantenha o formato do arquivo como *.csv.


 

Passo 4 – Obter dados apenas dos animais (com reprodução) - Salve o arquivo como '02an.csv'

Este passo é bem parecido com o anterior. Desta vez, buscaremos os dados dos animais em si. Antes de rodar a consulta, informe o 'NOME DO SETOR NO DESTINO' (mantenha as aspas simples).

Nas consultas, colocamos o código de exemplo '_ZZZ' . Ele deverá ser substituído para uma abreviação do nome da Fazenda de origem. Se ela se chama Santa Clara, por exemplo, basta trocar _ZZZ por _SCL).

Atenção: após rodar a consulta na fazenda de origem, na planilha obtida, dois campos deverão ser preenchidos para todos os animais:

  • Data da entrada: data na qual os animais entraram na fazenda de destino.
  • Peso de entrada: campo opcional. Ele pode ser informado na planilha ou lançado posteriormente.

select
'NOME DO SETOR NO DESTINO' as setor
, an.numero
, coalesce(an.nome, an.numero) as nome
, an.nomecompleto as nome_completo
, an.sexo
, (select grausangue from sp_calculagrausangue(an.cdanimal)) as grau_sangue
, an.dtnascimento
, pnas.peso as peso_nascimento
, NULL as dtentrada
, NULL as peso_entrada
, an.dtdesmama
, an.dtaptidao
, cat.nome as categoria
, an.brincoeletronico as brinco_eletronico
, NULL as tipo_grupo
, NULL as grupo
, NULL as pai
, NULL as mae
, an.seriealfa as seriealfa
, an.sufixo as sufixo
, an.prefixo as prefixo
, ulttent.data as ult_tentativa
, (case when (ulttent.cdtiporeproducao = 1) then (ulttent.CDREPRODUTOR || 'S_ZZZ')
when (ulttent.cdtiporeproducao = 2) and ulttent.cdreprodutor is not null then (ulttent.CDREPRODUTOR || '_ZZZ')
when (ulttent.cdtiporeproducao = 2) and ulttent.cdreprodutor is null then (select sigla from raca where cdraca = ulttent.cdraca)
when (ulttent.cdtiporeproducao = 3) then
(CASE WHEN (select count(CDANIMALRACA) FROM ANIMALRACA WHERE CDANIMALRACA = ra.CDANIMALRACA) = 1 THEN (SELECT sigla FROM raca WHERE cdraca IN (SELECT CDRACA FROM animalraca WHERE CDANIMALRACA = ra.CDANIMALRACA))
WHEN (select count(*) FROM animalraca WHERE CDANIMALRACA = ra.CDANIMALRACA) = 2
AND CDANIMALRACA IN (SELECT CDANIMALRACA FROM ANIMALRACA WHERE CDANIMALRACA = ra.CDANIMALRACA AND PERCENTUAL = 50) THEN 'XX'
WHEN (select count(*) FROM animalraca WHERE CDANIMALRACA = ra.CDANIMALRACA) = 2 AND CDANIMALRACA IN
(SELECT CDANIMALRACA FROM ANIMALRACA WHERE CDANIMALRACA = ra.CDANIMALRACA AND PERCENTUAL > 50) THEN (SELECT sigla FROM raca WHERE cdraca IN (SELECT CDRACA FROM animalraca WHERE CDANIMALRACA = ra.CDANIMALRACA AND PERCENTUAL > 50))
WHEN (select count(*) FROM animalraca WHERE CDANIMALRACA = ra.CDANIMALRACA) = 2 AND (SELECT PERCENTUAL FROM ANIMALRACA WHERE CDANIMALRACA = ra.CDANIMALRACA) = 50 THEN 'XX'
WHEN (select count(*) FROM animalraca WHERE CDANIMALRACA = ra.CDANIMALRACA) = 2 AND (SELECT PERCENTUAL FROM ANIMALRACA WHERE CDANIMALRACA = ra.CDANIMALRACA) = 50 THEN 'XX'
WHEN (select count(*) FROM animalraca WHERE CDANIMALRACA = ra.CDANIMALRACA) = 3 AND CDANIMALRACA IN
(SELECT CDANIMALRACA FROM ANIMALRACA WHERE CDANIMALRACA = ra.CDANIMALRACA AND PERCENTUAL > 50) THEN (SELECT sigla FROM raca WHERE cdraca IN
(SELECT CDRACA FROM animalraca WHERE CDANIMALRACA = ra.CDANIMALRACA AND PERCENTUAL > 50))
ELSE 'XX' end) ELSE null end) as rep_ult_tentativa
, ultpar.data as ult_parto
, (case when (ultpar.data is not null) then 'Composto' else Null end) as touro_ult_parto
, penultpar.data as penult_parto
, (case when (penultpar.data is not null) then 'Composto' else Null end) as touro_penult_parto
, antpenultpar.data as antpenult_parto
, (case when (antpenultpar.data is not null) then 'Composto' else Null end) as touro_antpenult_parto
from
animal an
left join animal mae on mae.cdanimal = an.cdmae
left join animal pai on pai.cdanimal = an.cdpai
left join peso pnas on pnas.cdpeso =
(select first 1 re.cdpeso from peso re where re.cdanimal = an.cdanimal and re.cdtipopeso in (1,2) and re.dtpeso = an.dtnascimento)
left join peso pent on pent.cdpeso =
(select first 1 re.cdpeso from peso re where re.cdanimal = an.cdanimal and re.cdtipopeso = 6 and re.dtpeso = an.dtentfazenda)
left join sp_categoriaanimal(current_date, 'cdanimal = ' || an.cdanimal) spcat on 1 = 1
left join categoria cat on cat.cdcategoria = spcat.cbasica

left join reproducao ultpar on ultpar.cdreproducao =
(select first 1 re.cdreproducao from reproducao re where re.cdanimal = an.cdanimal and re.cdtiporeproducao = 7 order by re.data desc)
left join reproducao cobultpar on cobultpar.cdreproducao =
(select first 1 re.cdreproducao from reproducao re where re.cdanimal = ultpar.cdanimal and re.cdtiporeproducao in (1,2,3) and re.data < ultpar.data order by re.data desc)
left join animal touultpar on touultpar.cdanimal = cobultpar.cdreprodutor

left join reproducao penultpar on penultpar.cdreproducao =
(select first 1 re.cdreproducao from reproducao re where re.cdanimal = an.cdanimal and re.cdtiporeproducao = 7 and re.data < ultpar.data order by re.data desc)
left join reproducao cobpenultpar on cobpenultpar.cdreproducao =
(select first 1 re.cdreproducao from reproducao re where re.cdanimal = penultpar.cdanimal and re.cdtiporeproducao in (1,2,3) and re.data < penultpar.data order by re.data desc)
left join animal toupenultpar on toupenultpar.cdanimal = cobpenultpar.cdreprodutor

left join reproducao antpenultpar on antpenultpar.cdreproducao =
(select first 1 re.cdreproducao from reproducao re where re.cdanimal = an.cdanimal and re.cdtiporeproducao = 7 and re.data < penultpar.data order by re.data desc)
left join reproducao cobantpenultpar on cobantpenultpar.cdreproducao =
(select first 1 re.cdreproducao from reproducao re where re.cdanimal = antpenultpar.cdanimal and re.cdtiporeproducao in (1,2,3) and re.data < antpenultpar.data order by re.data desc)
left join animal touantpenultpar on touantpenultpar.cdanimal = cobantpenultpar.cdreprodutor

left join reproducao ulttent on ulttent.cdreproducao =
(select first 1 re.cdreproducao from reproducao re where re.cdanimal = an.cdanimal and re.cdtiporeproducao in (1,2,3) and re.data > coalesce(ultpar.data, '1900-01-01') order by re.data desc)
left join animal touulttent on touulttent.cdanimal = ulttent.cdreprodutor
left join animal emb on emb.cdanimal = ulttent.cdembriao
left join animal paiemb on paiemb.cdanimal = emb.cdpai
LEFT JOIN animalraca ra ON ra.CDANIMAL = paiemb.CDANIMAL
where
an.cdanimal in (LISTA DE CDSANIMAIS DOS ANIMAIS QUE SERÃO IMPORTADOS)

 

 

Lembre-se de, na marcação em verde, informar a lista de códigos que você obteve no passo 1 (separados por vírgulas).

Mantenha o formato do arquivo como *.csv.

 


 

Passo 5 – Obter os controles leiteiros - Salve o arquivo como '03le.csv'

Agora, vamos obter os controles leiteiros dos animais. Esta é a Consulta SQL que deverá ser utilizada:

select
an.numero as numero
, lei1.PESO1 as peso_1
, lei1.PESO2 as peso_2
, lei1.PESO3 as peso_3
, lei1.PESOTOTAL as peso_total_leite
, lei1.dtleite as data_leite
from
leite lei1
left join animal an on lei1.cdanimal=an.cdanimal
where 
   an.cdanimal in (LISTA DE CDSANIMAIS DOS ANIMAIS QUE SERÃO IMPORTADOS) order by 1,6

 

 

Lembre-se de, na marcação em verde, informar a lista de códigos que você obteve no passo 1 (separados por vírgulas).

Mantenha o formato do arquivo como *.csv.

 


Passo 6 – Obter as pesagens corporais - Salve o arquivo como '04pe.csv'

Por fim, vamos obter as pesagens corporais dos animais. Esta é a Consulta SQL que deverá ser utilizada:

select
an.numero as numero
, pe.dtpeso as data_peso
, pe.PESO as peso
from
peso pe
left join animal an on pe.cdanimal=an.cdanimal
where 
pe.cdtipopeso not in (1,2,6) and
an.cdanimal in (LISTA DE CDSANIMAIS DOS ANIMAIS QUE SERÃO IMPORTADOS) order by 1,2

 

Lembre-se de, na cor verde, informar a lista de códigos que você obteve no passo 1 (separados por vírgulas).

Mantenha o formato do arquivo como *.csv.

 


Importação

Após obter todos os dados, basta ir até o menu 'Utilitários', opção 'Importação geral de dados', para iniciarmos a importação das informações. Esta é a ordem que deve ser seguida:

 

1) 01re.csv: Reprodutores (Cadastro de animal externo)
2) 02an.csv: Animais (Cadastro de animal)
3) 03le.csv: Controles leiteiros
4) 04pe.csv: Pesagens corporais