none
BULK INSERT com FILE FORMAT sem CARACTER TERMINATOR? RRS feed

  • Pergunta

  • Estou utilizando BULK INSERT para importação de uma massa de dados de um arquivo de texto (30 milhões de registros). Porém a formatação do arquivo não possui caracteres de separação, apenas posição inicial e número de caracteres do campo.

    Exemplo:

    00000000000000EMPRESA TESTE              12122001

    Posição 1: tamanho 14 = (campo CNPJ)

    Posição 15: tamanho 27 = (campo Nome da Empresa)

    Posição 28: tamanho 8 = (campo Data Fundação)

    Existe alguma forma de criar um FILE FORMAT (Arquivo de Formato) sem o CARACTER TERMINATOR, especificando apenas a posição inicial e o tamanho do Campo?

    quinta-feira, 28 de março de 2013 21:36

Respostas

  • Saltador, importe tudo em uma única linha e depois trate o dado através de substring. Ou vc pode utilizar o BCP para tal feito.

    http://gaurangpatel.net/importing-fixed-position-file-into-sql-server

    Abs.


    Eduardo Gomes - http://www.h1solucoes.com.br - Twitter: @edugp_sp

    • Marcado como Resposta Junior Galvão - MVPMVP, Moderator terça-feira, 2 de abril de 2013 13:11
    • Não Marcado como Resposta Saltador sexta-feira, 5 de abril de 2013 15:36
    • Marcado como Resposta Saltador sexta-feira, 5 de abril de 2013 15:37
    • Não Marcado como Resposta Saltador segunda-feira, 21 de outubro de 2013 19:49
    • Marcado como Resposta Saltador segunda-feira, 21 de outubro de 2013 21:35
    segunda-feira, 1 de abril de 2013 21:27
  • Saltador,

    A minha sugestão seria já no processo de importação, realizar a identificação das colunas com base em seus tamanhos, mapeando as colunas de destino através da função SubString.


    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]

    • Marcado como Resposta Saltador sexta-feira, 5 de abril de 2013 15:37
    terça-feira, 2 de abril de 2013 13:12
    Moderador
  • Boa tarde Saltador, no seu arquivo de formato, preencha a quinta coluna do FileFormat ( que corresponde ao CARACTER TERMINATOR) com vazio "", e a quarta coluna (que corresponde ao tamanho máximo do campo no arquivo de origem) com o tamanho do campo.

    Exemplo para CNPJ:

    2 SQLCHAR 0 14 "" 2 NUMERO_CNPJ SQL_Latin1_General_CP1_CI_AS

    • Marcado como Resposta Saltador segunda-feira, 21 de outubro de 2013 21:35
    segunda-feira, 21 de outubro de 2013 21:35

Todas as Respostas

  • Saltador, importe tudo em uma única linha e depois trate o dado através de substring. Ou vc pode utilizar o BCP para tal feito.

    http://gaurangpatel.net/importing-fixed-position-file-into-sql-server

    Abs.


    Eduardo Gomes - http://www.h1solucoes.com.br - Twitter: @edugp_sp

    • Marcado como Resposta Junior Galvão - MVPMVP, Moderator terça-feira, 2 de abril de 2013 13:11
    • Não Marcado como Resposta Saltador sexta-feira, 5 de abril de 2013 15:36
    • Marcado como Resposta Saltador sexta-feira, 5 de abril de 2013 15:37
    • Não Marcado como Resposta Saltador segunda-feira, 21 de outubro de 2013 19:49
    • Marcado como Resposta Saltador segunda-feira, 21 de outubro de 2013 21:35
    segunda-feira, 1 de abril de 2013 21:27
  • Saltador,

    A minha sugestão seria já no processo de importação, realizar a identificação das colunas com base em seus tamanhos, mapeando as colunas de destino através da função SubString.


    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]

    • Marcado como Resposta Saltador sexta-feira, 5 de abril de 2013 15:37
    terça-feira, 2 de abril de 2013 13:12
    Moderador
  • Boa tarde Saltador, no seu arquivo de formato, preencha a quinta coluna do FileFormat ( que corresponde ao CARACTER TERMINATOR) com vazio "", e a quarta coluna (que corresponde ao tamanho máximo do campo no arquivo de origem) com o tamanho do campo.

    Exemplo para CNPJ:

    2 SQLCHAR 0 14 "" 2 NUMERO_CNPJ SQL_Latin1_General_CP1_CI_AS

    • Marcado como Resposta Saltador segunda-feira, 21 de outubro de 2013 21:35
    segunda-feira, 21 de outubro de 2013 21:35