lwazevedo 0 Denunciar post Postado Março 31, 2015 Boa Tarde. Pessoal não possuo muito conhecimento em PL/SQL então gostaria de um auxilio para transformar um código para plsql. segue o código. Importação de um csv. imput from value("c:\temp\dados.csv"). repeat : import unformatted linha. /* Verifica se existe o registro na temp */ find tabela_dados where tabela_dados.id = entry(1,linha,";"). if not avail tabela_dados then do: /* se não existe o registro inseri/cria na tabela */ create tabela_dados. assign tabela_dados.id = entry(1,linha,";") tabela_dados.nome = entry(2,linha,";") tabela_dados.dtUltimoAcesso = entry(3,linha,";") tabela_dados.qtdAcesso = 1. end. else do: /* se existe os dados atualiza */ if tabela_dados.dtUltimoAcesso < entry(3,linha,";") then tabela_dados.dtUltimoAcesso = entry(3,linha,";"). tabela_dados.qtdAcesso = tabela_dados.qtdAcesso + 1. end. end. input close. Obrigado. Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Março 31, 2015 Ajuda saber o que faz cada comando , por exemplo este create tabela_dados. é de fato uma criação de uma tabela de bd ? Compartilhar este post Link para o post Compartilhar em outros sites
lwazevedo 0 Denunciar post Postado Março 31, 2015 Foi mal Motta. Segue o código mais detalhado. imput from value("c:\temp\dados.csv"). /*importa um arquivo de um diretorio*/ repeat : /* laço de repetição*/ import unformatted linha. /* importa a linha do arquivo conforme esta no arquivo*/ /* Find verifica se existe um registro na tabela conforme condição*/ find tabela_dados where tabela_dados.id = entry(1,linha,";") no-lock no-error. /* valida se o registro foi localizado na tabela*/ if not avail tabela_dados then do: /*Caso a tabela esteja vazia cria um registro novo na tabela*/ create tabela_dados. /* inseri os valores no registro criado*/ assign /* pega o registro antes do primeiro ;*/ tabela_dados.id = entry(1,linha,";") /* pega o registro antes do segundo ;*/ tabela_dados.nome = entry(2,linha,";") /** pega o registro antes do terceiro ; */ tabela_dados.dtUltimoAcesso = entry(3,linha,";") tabela_dados.qtdAcesso = 1. end. else do: /* localizo o registro na tabela*/ /*verifica se a data de ultimo acesso e menor que a atual*/ if tabela_dados.dtUltimoAcesso < entry(3,linha,";") then /*se for atualiza os dados*/ /** pega o registro antes do terceiro ; */ assign tabela_dados.dtUltimoAcesso = entry(3,linha,";"). /*atualiza o campo qtdAcesso valor atual + 1 */ assign tabela_dados.qtdAcesso = tabela_dados.qtdAcesso + 1. end. end. /*finaliz ao laço repeat*/ input close. /*finaliza a importação.*/ Obrigado. Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Março 31, 2015 Sem tempo par transformar o código mas : Para tratamento de arquivo pesquise pela package dbms_output Para Leitura de um registro use o select do SQL , atente que em plsql um select "solto" deve trazer 1 e somente 1 registro , fora isto use cursor Criar um registro numa tabela insert do sql Atualizar um registro update Não tem nada tipo "pega o registro antes do terceiro" tem de ponteirar via sql Compartilhar este post Link para o post Compartilhar em outros sites
lwazevedo 0 Denunciar post Postado Março 31, 2015 Certo. Obrigado pela ajuda Motta. Compartilhar este post Link para o post Compartilhar em outros sites