Array
(
)

Qual a mais rápida importação ?

Jmarcel
   - 14 jun 2011

Pessoal,

tenho vários arquivos em formato txt que preciso importá-los para o SQLServer2008.

São arquivos com periodicidade diária, semanal e mensal, de tamnhos variados (o maior tem uns 3Gb).

Não tive tempo ainda para testar, pois cheguei no meu atual setor recentemente. E já que aqui está tudo muito corrido, gostaria de saber se alguém pode me indicar a melhor solução para o seguinte:

- no servidor remoto SQLServer2008, atualmente executo a seguinte procedure para importar o txt:

#Código
USE [CARTAO]
GO
/****** Object:  StoredProcedure [dbo].[Importa_RELF012]    Script Date: 06/14/2011 12:44:43 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

ALTER PROCEDURE [dbo].[Importa_RELF012]
    @DtMov AS SmallDateTime
AS
BEGIN
    SET LANGUAGE Brazilian
        TRUNCATE TABLE CARTAO..VIP_Plasticos
            INSERT INTO CARTAO..VIP_Plasticos
                SELECT
                    TXT.MCI,
                    TXT.CONTACARTAO,
                    SUBSTRING(TXT.PLASTICO,2,16) AS PLASTICO,
                    TXT.TITULARIDADE,
                    TXT.RESTRICAO,
                    MESTRE.dbo.IsSmallDateTime(TXT.DTVALIDADE) AS DTVALIDADE,
                    TXT.EMBOSSAMENTO,
                    TXT.ENVIO,
                    TXT.PREFDEP,
                    MESTRE.dbo.IsSmallDateTime(TXT.DTEMISSAO) AS DTEMISSAO,
                    MESTRE.dbo.IsSmallDateTime(TXT.DTATIVACAO) AS DTATIVACAO,
                    MESTRE.dbo.IsSmallDateTime(TXT.DTCANCELAMENTO) AS DTCANCELAMENTO,
                    TXT.CHIP,
                    @DtMov AS DTMOV -- parâmetro passado na execução que é a data da geração do arquivo
                FROM TXT...RELF012#TXT AS TXT -- linked server no diretório TXT onde estão os arquivos
                WHERE TXT.TITULARIDADE < 256   
    DBCC SHRINKDATABASE (CARTAO)
END


Funciona, mas demora.

A grande pergunta é: seria mais rápida a importação usando BULK INSERT ?

Quaisquer outras dicas são muito bem-vindas também.

Obrigado pela atenção.

Marco Pinheiro
   - 10 jul 2011

Marcel,   A demora é relativa.   Hj esta demora é de qto tempo? Segundo vc, rodar uma importação de arquivos com 3GB é bem pesado.   Talvez vc possa quebrar esta importação durante o dia. Ao invés de mandar um pacotão de uma vez, vc pode mandar vários pacotes durante o dia.   Se quiser detalhar mais o seu processo, talvez possa ter outras saídas.   Att.,   Marco.