Usando xp_fileexist

Uma das tarefas mais tediosas que confrontam DBAs hoje é Inserção de dados em massa. Isto não é porque a própria tarefa é difícil, é porque os usuários que fornecem os dados para o movimento de inserção o fazem em um ritmo um pouco de lazer. Por exemplo, muitas empresas (talvez a sua) utiliza um sistema de contabilidade baseado em UNIX. Os dados de que o sistema precisa ser importados para o sistema de RH com base SQL Server regularmente (geralmente semanal ou mensal). Para importar esses dados você precisa esperar para que o usuário forneça o arquivo de exportação para que você possa inseri-lo em massa no banco de dados SQL Server. O problema para você está esperando, especialmente se isso está acontecendo com você na sexta-feira antes de um grande fim de semana fora da cidade. A melhor maneira de contornar este problema é automatizar o processo usando um procedimento armazenado estendido dos indocumentados chamado xp_fileexist.

Se você acabou de executar o procedimento, por si só você ver algo como isto:

xp_fileexist “c: \ autoexec.bat”

Arquivo Existe   Arquivo é um diretório    Parent Directory existe

———–     ——————-        ———————–

1                  0                               1

(1 row (s) affected)

Isto apenas significa que c: \ autoexec.bat existe e que não é um diretório. Isso é ótimo, exceto que você não pode basear uma etapa de trabalho sobre ele como eles são analfabetos e não podem ler o texto em linha reta. Se você quiser usar mais precisamente, precisa colocar a saída em uma variável. É aí que o código a seguir entra em jogo;
declare @result int

exec xp_fileexist ‘c:\autoexec.bat’, @result output

Se o arquivo existirresult realizará um valor de 1 Se o arquivo não existir, então a variável irá realizar um valor de 0 Agora você só precisa configurar um trabalho, com um passo que é algo como isto:

declare @result int

exec xp_fileexist ‘filename’, @result output

IF (result = 1)   –if existe importá-lo, caso contrário, saída

BEGIN

nometabela inserção em massa‘filename’

ELSE

print ‘filename não chegou’

Agora tudo que você precisa fazer é dizer ao povo de contabilidade onde enfiar seu arquivo (diretório o que quero dizer) e deixe SQL Server fazer o resto.

Existem algumas coisas importantes para lembrar aqui. Não há nenhuma verificação de erro embutido para o código que deve ter cuidado. Além disso, este é um recurso não documentado, o que significa que a Microsoft pode alterá-lo a qualquer momento sem qualquer aviso, de modo a verificar os seus procedimentos, após um pacote de atualização ou serviço. Fora isso, automatize suas importações!

Marcado com: , , , , , , , , , , , , , , , , , , , , , , , ,
Publicado em Desenvolvimento, SQL SERVER

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s

Arquivos
Follow SQL DATA BLOG on WordPress.com
Mais acessados
  • Nenhum
%d blogueiros gostam disto: