O SQL SERVER tem uma função é o BULK INSERT , ela é responsável por fazer fazer esse tipo de importação, você pode delimitar os separadores de linha, o que vale lembrar que este tipo de função não permite dar carga em campos específicos. O arquivo já deve estar totalmente formatado de acordo a tabela.
Um exemplo simples de como utilizar seria esse:
BULK INSERT DEC.dbo.Tab_Pernambucanas
FROM 'C::\Temp\saldo_201012_v2.txt'
WITH
(
FIELDTERMINATOR =',',
BATCHSIZE = 10000
);
Uma maneira de fazer uma procedure para esse tipo de inserção seria:
CREATE PROCEDURE IMPORTACAO (@TABLE VARCHAR(100),@CAMINHO VARCHAR(255), @DEL CHAR)
AS
declare @SQL VARCHAR(1000)
declare @err_instrucao varchar(255)
BEGIN
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE
begin transaction
SET @SQL =' BULK INSERT ' + @TABLE + '
FROM ' + @CAMINHO + '
WITH
(
FIELDTERMINATOR ='''+@DEL+''',
BATCHSIZE = 10000
)'
SET @err_instrucao = 'motivo do erro'
exec (@SQL)
commit transaction
return 0
err_instrucao:
raiserror (@err_instrucao,16,1)
rollback transaction
return 1
END
Essa é a minha sugestão, outros terão sugestões bem diferentes e todas as sugestões são bem vindas e ajudam no nosso crescimento profissional.
Outra informação importante é que esse tipo de instrução precisa de das seguintes permissões INSERT e ADMINISTER BULK OPERATIONS para poder executar.
Para um banco de dados no modelo de recuperação completa, todas as operações de inserção de linha executadas pela importação em massa são registradas completamente no log de transações. Importações de dados grandes poderão fazer o log de transações ficar cheio rapidamente se o modelo de recuperação completa for usado. Por outro lado, no modelo de recuperação simples ou no modelo de recuperação bulk-logged, o log mínimo de operações de importação em massa reduz a possibilidade de uma operação de importação em massa preencher o espaço do log. O log mínimo também é mais eficiente que o log completo.
(http://msdn.microsoft.com/en-us/library/ms190422.aspx)
Outra informação importante é que esse tipo de instrução precisa de das seguintes permissões INSERT e ADMINISTER BULK OPERATIONS para poder executar.
Para um banco de dados no modelo de recuperação completa, todas as operações de inserção de linha executadas pela importação em massa são registradas completamente no log de transações. Importações de dados grandes poderão fazer o log de transações ficar cheio rapidamente se o modelo de recuperação completa for usado. Por outro lado, no modelo de recuperação simples ou no modelo de recuperação bulk-logged, o log mínimo de operações de importação em massa reduz a possibilidade de uma operação de importação em massa preencher o espaço do log. O log mínimo também é mais eficiente que o log completo.
(http://msdn.microsoft.com/en-us/library/ms190422.aspx)
Nenhum comentário:
Postar um comentário