Jump to content
Fórum Script Brasil
  • 0

(Resolvido) Script basico.


Question

Bom dia!

Como posso criar um script simples com as seguintes condições:

Existe a planilha X no diretório C:\Pasta? Se sim, subir essa planilha para o meu B.D SQL e em seguida deletá-la desse diretório automaticamente e se não existir a planilha passa para a próxima planilha.

Por favor pessoal, aceito qualquer ajuda.

Obrigado desde já.

Abraços.

Link to post
Share on other sites

8 answers to this question

Recommended Posts

  • 0

Bom dia Ricardo,

Este script não é tão simples assim, pois este tipo de manipulação não está bem relacionada com o sql, mas com um aplicativo ou serviço.

O sql não consegue identificar o nome da planilha, pois o comando que deve passar para o sql é "ler planilha X". Desta forma, terá que ter antecipadamente o nome da planilha.

O melhor mesmo seria criar um serviço lendo o diretório das planilhas de tempos em tempos. Assim que identificar alguma planilha na pasta, ler e dar carga na base. Este aplicativo fará todo o controle, cabendo ao sql apenas as funções específicas a ele.

Link to post
Share on other sites
  • 0

Valeu Fulvio, já consegui.

declare @Path varchar(128), @FileName varchar(128)

select @Path = 'C:\' , @FileName = 'myfile.txt'

declare @i int

declare @File varchar(1000)

select @File = @Path + @FileName

exec master..xp_fileexist @File, @i out

if @i = 1

print 'exists'

else

print 'not exists'

Meu problema agora é no SSIS:

TITLE: Package Validation Error

------------------------------

Package Validation Error

------------------------------

ADDITIONAL INFORMATION:

Error at JRN015: The expression "@bolFileExists==True" must evaluate to True or False. Change the expression to evaluate to a Boolean value.

Error at JRN015: There was an error in the precedence constraint between "Verifica Aging Dias" and "Executar JRN015".

(Microsoft.DataTransformationServices.VsIntegration)

------------------------------

BUTTONS:

OK

------------------------------

Edited by ricardo.bezerra
Link to post
Share on other sites
  • 0

Boa tarde Ricardo,

Ainda prefiro um serviço... rs, mas vamos lá:

Dê uma olhada em sua sintaxe:

exec master..xp_fileexist @File, @i out
Creio que seja assim (faça os testes):
exec master.dbo.xp_FileExist @File, @i output

Link to post
Share on other sites
  • 0

Pessoal, finalmente o processo foi finalizado e, o SSIS programado encontre as planilhas e insere os dados na tabela e exclui a planilha do diretório...mas ocorre um problema. Depois que o processo é realizado, se eu colocar outra planilha no diretório com umas 3 linhas de informações à mais, o SSIS não insere esses dados e ocorre uma critica. Já aumentei a quantidade de 'MAXIMUNERRORCOUNT' e não adianta nada, o que pode ser?

Os scripts estão assim dentro do meu SSIS:

Alteração:

UPDATE

STG_DIM_PRDT

SET

DS_PRDT = ?,

FL_VOZ_DDOS = ?,

ID_TIPO_PRDT = ?,

DT_INSR_DW = GETDATE(),

DT_ATLZ_DW = GETDATE()

WHERE

ID_PRDT= ?

Inserção:

INSERT INTO STG_DIM_PRDT

(ID_PRDT,

DS_PRDT,

FL_VOZ_DDOS,

ID_TIPO_PRDT,

DT_INSR_DW,

DT_ATLZ_DW)

VALUES(?, ?, ?, ?, GETDATE(), GETDATE())

Pra chamada do JOB estamos utilizando o 'Script Task' para localizar a existência da planilha no diretório e para iniciar o processo do JOB o 'Execute Package Task' e o JOB em si utilizamos nessa ordem: 'Excel Source' >> 'Data Conversion' >> 'Lookup' >> e nesse ponto UPDATE(SQL Command) ou INSERT(SQL Command) que mostrei acima.

O que pode estar errado?

Obrigado.

Ricardo.

Link to post
Share on other sites
  • 0

Bom dia Rcardo,

Você está utilizando o mesmo nome de pacote para executar a nova alteração? Caso seja, seria interessante alterar o nome, pois o sql grava as informações do pacote em sua log.

Quando você realiza a execução, ele recupera da log informações do pacote. Para não ter problemas, renomeie o novo script.

Link to post
Share on other sites
  • 0

Bom dia!

Eu já descobri o problema. Coloquei para solicitar uma droga de password e toda vez que vou rodar o pacote, a mensagem é que não localiza o pacote ou que não tenho permissão, mesmo quando coloco a senha correta. Como faço para tirar a obrigatoriedade de senha? Porque tentei rodar um backup dos pacotes e continua a mesma coisa. Por favor...

Obrigado.

Ricardo.

Galera, acho que consegui, desculpem o pedido acima...Em 'Control Flow' cliquei com o direito >> 'Propriedades' >> 'Password' deixei em branco e salvei...tentei rodar e executou corretamente.

Obrigado mesmo assim pela paciência de todos.

Ricardo.

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      148865
    • Total Posts
      644863
×
×
  • Create New...