Algumas vezes, pode surgir a necessidade de você criar novos registros em uma tabela, de forma que as informações desses novos registros sejam exatamente as mesmas informações de algum registro já existente, com exceção da chave primária.

Fazer isso manualmente pode ser um desafio ou até mesmo inviável, levando-se em consideração a grande quantidade de tarefas que temos a fazer no dia a dia.

Além disso, sempre que possível, é sempre é importante buscarmos formas de automatizar trabalhos ou atividades padronizadas e repetitivas.

O Código SQL

Nesse sentido, segue um exemplo de código utilizado para criar novos registros em uma tabela, com base em registros já existentes, executado no SGBD PostgreSQL versão 9.5:

INSERT INTO public.produtoicms (
  id,
  aliq_icms_st_destino,
  aliq_icms_fcp_destino,
  aliq_icms_normal_destino,
  aliquota,
  aliquota_icms_retido,
  aliquota_st,
  aliquota_simples_nacional,
  base_calculo,
  base_calculo_icms_proprio,
  base_calculo_icms_retido,
  base_calculo_st,
  bc_icms_normal_destino,
  bc_icms_st_destino,
  cfop,
  descricao,
  modalidade_det_bc,
  modalidade_det_bc_st,
  motivo_desoneracao_icms,
  origem_mercadoria,
  percentual_mva,
  situacao_tributaria_paf_ecf,
  csosn_id,
  cst_icms_id,
  porcent_red_base_calculo
)
SELECT
  nextval('produto_icms_id_seq'),
  aliq_icms_st_destino,
  aliq_icms_fcp_destino,
  aliq_icms_normal_destino,
  aliquota,
  aliquota_icms_retido,
  aliquota_st,
  aliquota_simples_nacional,
  base_calculo,
  base_calculo_icms_proprio,
  base_calculo_icms_retido,
  base_calculo_st,
  bc_icms_normal_destino,
  bc_icms_st_destino,
  cfop,
  descricao,
  modalidade_det_bc,
  modalidade_det_bc_st,
  motivo_desoneracao_icms,
  origem_mercadoria,
  percentual_mva,
  situacao_tributaria_paf_ecf,
  csosn_id,
  cst_icms_id,
  porcent_red_base_calculo
FROM public.produtoicms
WHERE id = 43127;

Como funciona

  1. nextval(‘produto_icms_id_seq’): pega o próximo valor da sequência usada no campo id (levando-se em consideração que temos um sequence chamado “produto_icms_id_seq”;
  2. O resto dos campos é copiado diretamente do registro original (WHERE id = 43127).

Conectando os Pontos

É importante lembrar que o universo da Ciência de Dados é muito grande e composto de diversas áreas e ferramentas. Dessa forma, entender ferramentas avançadas de análise de Business Intelligence e linguagens de tratamento de dados, como a SQL, é tão importante quanto entender de ferramentas mais básicas (como o Excel) e o próprio conhecimento do campo (no nosso caso, a Contabilidade).