none
Importação Bulk Insert RRS feed

  • Pergunta

  • Galera,

    graças as posts anteriores já estou conseguindo importar o arquivo Txt, porém a quantidade de registro importado não está batendo com a quantidade de registro do arquivo.

    Peguei alguns exemplos e não identifiquei o pq não terem sido importados.

    Alguém tem ideia?
    Daniel
    terça-feira, 10 de fevereiro de 2009 16:54

Respostas

  • Olá,

    Sugiro que crie um novo arquivo, com apenas 10 linhas.. limpe todos os espaços entre as linhas, deixando realmente todos os registros em apenas 1 linha (sem word wrap), uma linha embaixo da outra.

    Faça a carga e veja se a quantidade bate. Se tudo ok, aumente para uns 100 registros, e teste novamente.

    Se tudo ok, o procedimento está correto (comando BULK), e o problema é no arquivo. Tente verificar o word wrap, o espaçamento entre linhas (conforme citado acima).

    Tente também, importar o arquivo via Import/Export, direto pelo SSMS. Selecione as mesmas opções de delimitador e veja o resultado. Na tela do Import, há inclusive um preview das informações, que mostrará se as linhas estão sendo cortadas ao meio, por exemplo.

    Um abraço,
    Raul Santos Neto
    • Marcado como Resposta dralves segunda-feira, 16 de fevereiro de 2009 12:01
    quarta-feira, 11 de fevereiro de 2009 15:10

Todas as Respostas

  • Olá,

    Pelo que lembro do post anterior, você colocou a opção firstrow = 2. Os dados de seu arquivo txt começam mesmo na segunda linha?

    Abraços
    Demétrio Silva
    terça-feira, 10 de fevereiro de 2009 17:02
  • Sim, Mas a diferença é muito grande. O arquivo tem 1.920.263 e a importação foi 960.131
    Daniel
    terça-feira, 10 de fevereiro de 2009 17:12
  • Daniel,

     
    Qual o delimitador de linha você usou?

    Pode ser que o delimitador que você esteja usando exista como valor em algum registro

    Abraços
    Demétrio Silva
    terça-feira, 10 de fevereiro de 2009 17:42
  • O delimitador foi o " | ".
    Daniel
    terça-feira, 10 de fevereiro de 2009 17:44
  • Olá,
     
    Existe algum registro no BD que contenha este valor ( "|" ) como dado?


    Abraços
    Demétrio Silva
    terça-feira, 10 de fevereiro de 2009 18:06
  • Não existe. Porém o ultimo campo possui informação do meu primeiro campo e totalmente desconfigurado.


    Daniel
    terça-feira, 10 de fevereiro de 2009 19:05
  •  Alquem tem ideia?
    Daniel
    terça-feira, 10 de fevereiro de 2009 20:16
  • primeiro tente importar sem usar a formatacao em uma tabela, para ver se vem todas as linhas, caso esteja ok tem que revisar o delimitador nao tem outra alternativa, para testar use um pacote do integration acho que o problema seu deve estar no delimitador de linha e nao de coluna qual delimitador de linha vc. esta usando ?
    mcolla@bol.com.br
    quarta-feira, 11 de fevereiro de 2009 09:33
  • Marcelo,

    Eu utilizo o SSIS para exportar essa tabela para arquivo txt. E na configuração da importação utilizo as seguintes caracteristicas:

    Format: Delimited
    Text_Qualifier: <none>
    Header Row delimiter: {CR}-{LF}

    Vê se ajuda.
    Daniel
    quarta-feira, 11 de fevereiro de 2009 12:09
  • Marcelo,

    testei importando sem as formatações de uma tabela e não importou todos os registros( a quantidade importada é a mesma do que a anterior)
    Daniel
    quarta-feira, 11 de fevereiro de 2009 12:41
  • Socorro Gente. To precisando de uma ajuda ainda hoje esse arquivo eu não possuo mais em tabela de SQL somente possuo em TXT
    Daniel
    quarta-feira, 11 de fevereiro de 2009 13:10
  • Olá,

    Posta os dados de uma ou duas olinhas do teu arquivo txt.

    Abraços
    Demétrio Silva
    quarta-feira, 11 de fevereiro de 2009 13:15
  • Olá dralves,

    Note que a quantidade de registros inseridos é exatamente a metade dos arquivos que você diz existir em seu arquivo.

    A pergunta pode parecer besta, mas onde você está visualizando o TXT para saber quantos linhas existem? No Notepad? Você desmarcou a opção Word Wrap (Menu Format > Word Wrap), certo? Pode ser que sua linha seja comprida, esteja duplicando, e ao contar, você acha que tem o dobro de linhas!

    De qualquer forma, poste aqui o comando BULK que você está utilizando e três linhas (as 3 iniciais) do teu arquivo.

    Um abraço,
    Raul Santos Neto
    quarta-feira, 11 de fevereiro de 2009 13:28
  • Raul,

    Não parece besta não. Isso é uma boa observação.

    Abraços


    Demétrio Silva
    quarta-feira, 11 de fevereiro de 2009 13:29
  •  UF|Ano_Mes_Fat|Nr_CNPJ_CPF_Cliente|Cd_Localidade|Nr_Meio_Acesso|Nr_Conjunta|Nr_Sequencia|Dt_Novo_Vencto|Dt_Recebimento|Dt_Cancelamento|Cd_Cancelamento|Vl_Telemar|Vl_Terceiros|Vl_Credito|Tp_Assinante|Dt_Instalacao|Tp_Linha|Cd_Servico|Unidade_Negocio|Id_Fis_Jur|Dac|Cd_Relac_Cliente|Tipo_Pessoa|Nr_Ciclo|Cd_Risco|Cod_Plano|Familia_Plano
    RR|200803|42863732234|2799|36237385|0|3|2008-04-01 00:00:00|2008-04-30 00:00:00||0|91,33|20|0|2|2007-09-15 00:00:00|100|0|VARRES|1|0|10|PF|6|99999||

    RR|200811|74783742200|2490|32631909|0|7|2008-12-11 00:00:00|2008-12-09 00:00:00||0|10,33|0|0|2|2008-02-06 00:00:00|100|0|VARRES|1|0|10|PF|8|331|BLOT01|BLOQUEIO   
    Daniel
    quarta-feira, 11 de fevereiro de 2009 13:31
  • Estou visualizando no UltraEdit.

    Acabei de postar 2 linhas do arquivo txt

    Comando Bulk Insert

    BULK INSERT dbo.D_Faturas_BA_Fixa1

    FROM 'D:\FIXA_PA_PI_RN_SE\RR.txt'

    WITH (FORMATFILE = 'c:\\daniel\teste.fmt',

    ROWTERMINATOR = '\n',

    FIRSTROW = 2,

    KEEPNULLS

    )


    Daniel
    quarta-feira, 11 de fevereiro de 2009 13:33
  • DrAlves,

    Você já notou que entre um registro e outro existem linhas em branco? Neste exemplo que você postou existe uma linha no meio dos dois registros.

    Abraços
    Demétrio Silva
    quarta-feira, 11 de fevereiro de 2009 14:02
  • Olá,

    Sugiro que crie um novo arquivo, com apenas 10 linhas.. limpe todos os espaços entre as linhas, deixando realmente todos os registros em apenas 1 linha (sem word wrap), uma linha embaixo da outra.

    Faça a carga e veja se a quantidade bate. Se tudo ok, aumente para uns 100 registros, e teste novamente.

    Se tudo ok, o procedimento está correto (comando BULK), e o problema é no arquivo. Tente verificar o word wrap, o espaçamento entre linhas (conforme citado acima).

    Tente também, importar o arquivo via Import/Export, direto pelo SSMS. Selecione as mesmas opções de delimitador e veja o resultado. Na tela do Import, há inclusive um preview das informações, que mostrará se as linhas estão sendo cortadas ao meio, por exemplo.

    Um abraço,
    Raul Santos Neto
    • Marcado como Resposta dralves segunda-feira, 16 de fevereiro de 2009 12:01
    quarta-feira, 11 de fevereiro de 2009 15:10
  • Olá,

    Acredito que com estas informações você consiga resolver seu problrme.

    Abraços
    Demétrio Silva
    quarta-feira, 11 de fevereiro de 2009 15:13
  • Os espaços vazios são os campos que não possem mesmo informação, porém são separadas por " | ", ou seja, são colunas e tem que existir mesmo.

    Consegui importar pelo SSIS. Porém tive que configurar o output do arquivo txt, alguns campos não foram convertidos automaticamente.

    A pergunta é. Como faço isso no Bulk Insert?
    Daniel
    quarta-feira, 11 de fevereiro de 2009 17:00
  • dralves disse:

    Marcelo,

    testei importando sem as formatações de uma tabela e não importou todos os registros( a quantidade importada é a mesma do que a anterior)


    Daniel



    so para testar abra no word pad e salve o arquivo so abra e salve depois tente importar novamente. ( e so um teste )

    Abs;
    mcolla@bol.com.br
    quarta-feira, 11 de fevereiro de 2009 17:58
  • Marcelo finalmente consegui importar, porém quando tento fazer o mesmo procedimento do meu servidor para a máquina ele não está conseguindo encontrar o arquivo.

    Msg 4861, Level 16, State 1, Line 1

    Cannot bulk load because the file "\\10.20.89.89\Trabalho\RR.txt" could not be opened. Operating system error code 5(error not found).


    Daniel
    quarta-feira, 11 de fevereiro de 2009 21:11
  • Alquem tem ideia?
    Daniel
    quinta-feira, 12 de fevereiro de 2009 12:53