none
Importando usando o Bulk Insert, dados em formato TXT para SQL Server 2005 RRS feed

  • Pergunta

  • Boa tarde,

    Estou tentando importar dados extraidos de arquivos DBF formato FoxPro. Exportei os dados para um arquivo texto usando delimitador e todas as formar que encontrei nos foruns deram problemas, mas vou me ater somente ao BULK INSERT.

    Pequei esse ultimo como exemplo, mas sem sucesso:

    DECLARE

    @CAMINHO VARCHAR(256), @SQL VARCHAR (1000

    )

    SET

    @CAMINHO =

    'C:\Projetos\PCP\DBFS\CLI.TXT'

    SET

    @SQL =

    'BULK INSERT CLIENTES

    FROM '''

    + @CAMINHO +

    '''

    WITH (FIELDTERMINATOR = '','', CODEPAGE =''ACP'', ROWTERMINATOR=''\n'')'

    EXEC

    (@SQL)

    Esse arquivo CLI.TXT tem 8.707 linhas, segue abaixo exemplo:

    1,GILDA MARIA BONADIMAN,44989296753,CONSUMIDOR,R.FORTUNATO RAMOS,1165/104,VITORIA,PRAIA DO CANTO,29000000,0270000000
    2,FERNANDO FERREIRA,670448672,CONSUMIDOR,R.LUDGERO DOLABELA,291/22,BELO HORIZONTE,GUTIERREZ,30430130,0313321152
    3,JOAO ALVES VERAS,132330687,CONSUMIDOR,R.BERNARDO GUIMARAES,83/501,BELO HORIZONTE,FUNCIONARIOS,30140080,0312814336
    4,JOSE MAURICIO DILELLIS,11824751672,CONSUMIDOR,R.SAO PAULO,818-CJ.1803,BELO HORIZONTE,CENTRO,30170131,0312240448,
    5,KLEVERSON MESQUITA MELLO,53836278634,,AV.1O DE JUNHO DE,152,BOM DESPACHO,CENTRO,35600000,0379851064,
    6,APARECIDA SILVA LIMA,446676632,CONSUMIDOR,R.TEREZA HOSTALACIO,43,PIUMHI,.,37925000,0373712114,0373712035
    7,HELIO RICARDO FORTES RIBEIRO,27886077687,,R. LUIZ CHAGAS CARVALHO, 193,BELO HORIZONTE,D. CLARA,31260200,0314410422,0314977796
    8,LIVIA MARA COSTA ARAUJO QUIROGA,969259735,,NICOMEDES SOUZA RIBEIRO,276,MACAE,CASA 4/COSTA DO SOL,27923390,247620777,
    9,ARMANDO MIRANDA DE ALBUQUERQUE MARANHAO,6299377615,CRM 5452,R. DOS OTONI, 705 CONJ. 203,BELO HORIZONTE,STA. EFIGENIA,,0312263013,
    10,MAURICIO JOSE DE CASTILHO,51221896687,CONSUMIDOR,R.HENRIQUE PASSINI, 562/501,BELO HORIZONTE,SERRA,30220380,0313492832,
    11,VANESSA MANHAES CATA PRETA,1450133754,,RUA DA ASSEMBLEIA, 92/7,RIO DE JANEIRO,CENTRO,,0219899703,
    12,JOSE RICARDO DE ABREU JUDICE,39476014768,,RUA PEDRO PALACIOS,406/407,VITORIA,CENTRO,29015000,0272225555,
    13,MARIA MARCIA GOMES,51703971604,CONSUMIDOR,R.MARANHAO,886 APTO.105,BELO HORIZONTE,FUNCIONARIOS,30150330,0312238164,
    14,LUCIANA VALADARES L. M. SCHICHMAN,734571755,,AV.CONTORNO, 9939/102,DIVINOPOLIS,BARRO PRETO,,0313786570,
    15,MARCIA CAMPOS OLIVEIRA,53315642672,,AV. GOV. VALADARES 296/208,BETIM,CENTRO,32510010,0315315650,
    16,MARIA MADALENA DE SOUZA,2965646647,,R. BARAO DE MACAUBAS 369,BELO HORIZONTE,STO ANTONIO,30350090,0313422311,
    17,JANIR ADIR MOREIRA,10169202615,459950AB,R.JADE, 09,BELO HORIZONTE,PRADO,30260630,0313344464,
    18,CLAUDIO HENRIQUE ALVES,27761223653,M 1275662,R. ALVARENGA PEIXOTO, 300/1501,BELO HORIZONTE,LOURDES,30180120,0314866464,
    19,MANOEL ELIAS NAHAS,21980489653,M 434589,AV.JOAO C. OLIVEIRA, 2959/203,CONTAGEM,C. INDUSTRIAL,32340001,0313961796,
    20,TONY MARLE DINIZ BICALHO,87856441615,CONSUMIDOR,AV.BRASIL,2812,GOVERNADOR VALADARES,CENTRO,35020070,0332715492,

    Dando os seguintes mensagens de erro:

    Msg 4863, Level 16, State 1, Line 1

    Erro de converso dos dados de carregamento em massa (truncamento) na linha 1, coluna 8 (NRCEP).

    Msg 4863, Level 16, State 1, Line 1

    Erro de converso dos dados de carregamento em massa (truncamento) na linha 2, coluna 8 (NRCEP).

    Msg 4863, Level 16, State 1, Line 1

    Erro de converso dos dados de carregamento em massa (truncamento) na linha 3, coluna 13 (NMMAIL).

    Msg 4863, Level 16, State 1, Line 1

    Erro de converso dos dados de carregamento em massa (truncamento) na linha 4, coluna 13 (NMMAIL).

    Msg 4863, Level 16, State 1, Line 1

    Erro de converso dos dados de carregamento em massa (truncamento) na linha 5, coluna 8 (NRCEP).

    Msg 4863, Level 16, State 1, Line 1

    Erro de converso dos dados de carregamento em massa (truncamento) na linha 6, coluna 13 (NMMAIL).

    Msg 4863, Level 16, State 1, Line 1

    Erro de converso dos dados de carregamento em massa (truncamento) na linha 7, coluna 8 (NRCEP).

    Msg 4863, Level 16, State 1, Line 1

    Erro de converso dos dados de carregamento em massa (truncamento) na linha 8, coluna 11 (NRFONECELULAR).

    Msg 4863, Level 16, State 1, Line 1

    Erro de converso dos dados de carregamento em massa (truncamento) na linha 9, coluna 13 (NMMAIL).

    Msg 4863, Level 16, State 1, Line 1

    Erro de converso dos dados de carregamento em massa (truncamento) na linha 10, coluna 8 (NRCEP).

    Msg 4863, Level 16, State 1, Line 1

    Erro de converso dos dados de carregamento em massa (truncamento) na linha 11, coluna 8 (NRCEP).

    Msg 4865, Level 16, State 1, Line 1

    No possvel carregar em massa porque foi excedido o nmero mximo de erros (10).

    Msg 7399, Level 16, State 1, Line 1

    O provedor do OLE DB "BULK" para o servidor vinculado "(null)" reportou um erro. O provedor no forneceu informaes sobre o erro.

    Msg 7330, Level 16, State 2, Line 1

    No possvel buscar uma linha no provedor do OLE DB "BULK" para o servidor vinculado "(null)".

    OBS.: Um ultima pergunta, tem alguma coisa haver se as tabelas ja foram criadas com suas respectivas chaves?

    Se puderem ajudar, desde ja agradeco.

    sexta-feira, 25 de março de 2011 18:24

Respostas

  • Wagner dessa forma que vc quer fazer não funciona!!!

    vc deverá fazer dessa maneira:

    SET

    @SQL = 'BULK INSERT CLIENTES FROM '''+ @CAMINHO +

    ''' WITH (FIRSTROW=1,CODEPAGE=''ACP'',FIELDTERMINATOR = '';'',BATCHSIZE = 1000,ROWTERMINATOR = ''\n'')'

     

    Exec(@SQL)

     

    OBS: BATCHSIZE = 1000 ESTOU MANDANDO IMPORTAR EM LOTES DE 1000 REGISTROS

     

    Luis Dias Rabelo 

     
    • Marcado como Resposta Richard Juhasz segunda-feira, 28 de março de 2011 19:51
    sexta-feira, 25 de março de 2011 19:13
  • Wagner,

    o erro de truncamento está acontecendo porque você está tentando inserir alguns valores que são maiores do que a capacidade dos respectivos campos.

     Verifique os tamanhos das colunas e o tamanho dos textos(Números etc) que você está tentando inserir nelas

    Agora para o outro erro (O provedor do OLE DB "BULK" para o servidor vinculado "(null)" reportou ...), tente instalar este hotfix.

    http://support.microsoft.com/kb/937545/pt-br

    Espero que ajude

    Se for útil, marque como resposta.


    Luiz Phellipe
    • Marcado como Resposta Richard Juhasz segunda-feira, 28 de março de 2011 19:51
    sexta-feira, 25 de março de 2011 22:03

Todas as Respostas

  • Wagner dessa forma que vc quer fazer não funciona!!!

    vc deverá fazer dessa maneira:

    SET

    @SQL = 'BULK INSERT CLIENTES FROM '''+ @CAMINHO +

    ''' WITH (FIRSTROW=1,CODEPAGE=''ACP'',FIELDTERMINATOR = '';'',BATCHSIZE = 1000,ROWTERMINATOR = ''\n'')'

     

    Exec(@SQL)

     

    OBS: BATCHSIZE = 1000 ESTOU MANDANDO IMPORTAR EM LOTES DE 1000 REGISTROS

     

    Luis Dias Rabelo 

     
    • Marcado como Resposta Richard Juhasz segunda-feira, 28 de março de 2011 19:51
    sexta-feira, 25 de março de 2011 19:13
  • Wagner,

    o erro de truncamento está acontecendo porque você está tentando inserir alguns valores que são maiores do que a capacidade dos respectivos campos.

     Verifique os tamanhos das colunas e o tamanho dos textos(Números etc) que você está tentando inserir nelas

    Agora para o outro erro (O provedor do OLE DB "BULK" para o servidor vinculado "(null)" reportou ...), tente instalar este hotfix.

    http://support.microsoft.com/kb/937545/pt-br

    Espero que ajude

    Se for útil, marque como resposta.


    Luiz Phellipe
    • Marcado como Resposta Richard Juhasz segunda-feira, 28 de março de 2011 19:51
    sexta-feira, 25 de março de 2011 22:03