none
Bulk Insert SQL SERVER RRS feed

  • Pergunta

  • Ola, Pessoal, 

    Estou com a seguinte situação, quero importar um arquivo txt delimitado por ; cuja quantidade de colunas varía.

    Ex:

    1;FuncionarioA; 1000;

    2; FuncionarioB;

    3; Cliente; 200; rua A

    O Código é o seguinte:

    CREATE TABLE USUARIOS(

    ID int,

    Nome varchar(60),

    Renda  int,

    Endereço varchar(40))

     BULK INSERT SPEDC_TABPONTE

        FROM 'C:\Users\Usuario\Desktop\Usuarios.txt'

        WITH

        (

          FIELDTERMINATOR = ';',

          ROWTERMINATOR = ';\n',

          KEEPNULLS

        )

       

    Só que quando a coluna não existe no arquivo, o bulk insert alimenta com os dados da linha seguinte, automaticamente,

    o q desemparelha as informações;

    Como faço para que quando não existir mas dados na linha do arquivo txt.

    O bulk insert va alimentar o da linha seguinte?

    Alguem Poderia me ajudar?

    segunda-feira, 11 de junho de 2012 01:54

Respostas

  • Alex,

    Tal caracteristica até aonde eu sei não conseguira ser tratada pelo sql server, normalmente esses arquivos delimitados, ainda que não possua valores na coluna, a coluna existe como ;; para não causar justamente este tipo de erro, não vejo maneira nenhuma de realizar isso a não ser:

    (Sim, é um trabalho grande....)

    - Importe o arquivo para uma tabela contando apenas com quebra de linha, como quebra de coluna, coloque um caracter que não exista (¢ por exemplo), assim voce importara uma linha para uma tabela e ficara tipo:

    SELECT Campo

    FROM TabelaQueRecebeuOImport

    Resultado:

    Fabrizzio Caputo;20;Masculino

    Camila Lira;19;Feminino;20120101

    Giovanni Caputo;17;Masculino

    Note que o segundo registro possui uma coluna a mais, porem para sua tabela esta tudo em um só.

    Então, voce deve criar um processo que va lendo em relação as virgular linha a linha e inserindo na tabela final.

    Como dica: Evite arquivos dessa natureza, se for passar por algumas auditorias ISO, arquivos dessa forma no processo contam pontos negativos.


    Fabrizzio A. Caputo
    MCT
    Certificações:
    Oracle OCA 11g
    MCITP SQL Server 2008 Implementation and Maintenance
    MCITP SQL Server 2008 Developer
    Blog Pessoal: www.fabrizziocaputo.wordpress.com
    Blog Empresa: www.tripletech.com.br/blog
    Twitter: @FabrizzioCaputo
    Email: fabrizzio.antoniaci@gmail.com

    • Sugerido como Resposta Heloisa Pires sexta-feira, 15 de junho de 2012 13:45
    • Marcado como Resposta Heloisa Pires terça-feira, 3 de julho de 2012 11:53
    segunda-feira, 11 de junho de 2012 13:08
    Moderador

Todas as Respostas

  • Alex,

    Tal caracteristica até aonde eu sei não conseguira ser tratada pelo sql server, normalmente esses arquivos delimitados, ainda que não possua valores na coluna, a coluna existe como ;; para não causar justamente este tipo de erro, não vejo maneira nenhuma de realizar isso a não ser:

    (Sim, é um trabalho grande....)

    - Importe o arquivo para uma tabela contando apenas com quebra de linha, como quebra de coluna, coloque um caracter que não exista (¢ por exemplo), assim voce importara uma linha para uma tabela e ficara tipo:

    SELECT Campo

    FROM TabelaQueRecebeuOImport

    Resultado:

    Fabrizzio Caputo;20;Masculino

    Camila Lira;19;Feminino;20120101

    Giovanni Caputo;17;Masculino

    Note que o segundo registro possui uma coluna a mais, porem para sua tabela esta tudo em um só.

    Então, voce deve criar um processo que va lendo em relação as virgular linha a linha e inserindo na tabela final.

    Como dica: Evite arquivos dessa natureza, se for passar por algumas auditorias ISO, arquivos dessa forma no processo contam pontos negativos.


    Fabrizzio A. Caputo
    MCT
    Certificações:
    Oracle OCA 11g
    MCITP SQL Server 2008 Implementation and Maintenance
    MCITP SQL Server 2008 Developer
    Blog Pessoal: www.fabrizziocaputo.wordpress.com
    Blog Empresa: www.tripletech.com.br/blog
    Twitter: @FabrizzioCaputo
    Email: fabrizzio.antoniaci@gmail.com

    • Sugerido como Resposta Heloisa Pires sexta-feira, 15 de junho de 2012 13:45
    • Marcado como Resposta Heloisa Pires terça-feira, 3 de julho de 2012 11:53
    segunda-feira, 11 de junho de 2012 13:08
    Moderador
  • Alex,

    Se que ao invês de utilizar o Bulk Insert, não poderíamos utilizar o BCP trabalhando também com arquivos formatados, no caso, arquivos .fmt?


    Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | SorBR.Net | Professor Universitário | MSIT.com]

    segunda-feira, 11 de junho de 2012 13:39
  • Valew, Fabrizzio

    Funcionou;

    quarta-feira, 11 de julho de 2012 13:36