none
Insert Bulk com varios tipos de Terminator RRS feed

  • Pergunta

  • Ola Pessoal, me ajudem com uma dúvida, estou tentando subir os dados com insert bulk com a seguinte FIELDTERMINATOR e ROWTERMINATOR , porém da erro (erro de conversão dos dados de carregamento em massa (truncamento) na linha 1), comando abaixo:

    BULK INSERT INPUTSAP..INPUT FROM 'C:\Users\lucia\Desktop\INPUT\ZT042.csv'
    WITH 
    (
    FIELDTERMINATOR = '0', 
    ROWTERMINATOR = '\\'
    )
    ;

    Pois o arquivo que estou tentando vem direto do SAP, e ele está com o seguinte demilitador \. Alguém já pegou um cenário desse?

    Obrigado.




    segunda-feira, 22 de janeiro de 2018 23:47

Respostas

  • Luciano,

    Se realmente estas seis últimas colunas não possuem dados, tente omitir as mesmas no processo de importação, uma possibilidade seria criar a tabela sem estas colunas e após a importação realizar a criação das mesmas.

    Assim você já poderia eliminar algumas possibilidades de erro no processo de carga.


    Pedro Antonio Galvao Junior [MVP | MCC | MSTC | MIE | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | Professor Universitário | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]

    quarta-feira, 24 de janeiro de 2018 17:27

Todas as Respostas

  • Deleted
    terça-feira, 23 de janeiro de 2018 07:45
  • Ola José, obrigado pelo retorno.

    Utilizei esse FIELDTERMINATOR também e não está subindo o arquivo, da o erro:

    Mensagem 4866, Nível 16, Estado 1, Linha 104
    Falha no carregamento em massa. A coluna é longa demais no arquivo de dados, na linha 1, coluna 75. Verifique se o terminador de campo e da linha estão especificados corretamente.
    Mensagem 7399, Nível 16, Estado 1, Linha 104
    O provedor do OLE DB "BULK" para o servidor vinculado "(null)" reportou um erro. O provedor não forneceu informações sobre o erro.
    Mensagem 7330, Nível 16, Estado 2, Linha 104
    Não é possível buscar uma linha no provedor do OLE DB "BULK" para o servidor vinculado "(null)".

    Mesmo eu criando a tabela e deixando tudo como VARCHAR, exemplo abaixo, criei toda tabela:

    CREATE TABLE INPUT..ZT042INPUT
    (
    CANAL_DISTRIBUICAO                VARCHAR(20),
    DOCUMENTO_SD                      VARCHAR(20),
    ITEM                              VARCHAR(20),
    TIPO_DOCVENDA                     VARCHAR(20),
    NOMEVENDEDOR                      VARCHAR(50),
    CODIGO_VENDEDOR                   VARCHAR(50),
    DATA_CRIACAO_1                    VARCHAR(50),
    MATERIAL                          VARCHAR(50),
    DENOMINACAO_1                     VARCHAR(50),
    PLANO                             VARCHAR(50),
    KIT                               VARCHAR(50),
    DENOMINACAO_2                     VARCHAR(50),
    DESCONTO_OFFER                    VARCHAR(50),
    QTDE_COMPARTILHAMENTO             VARCHAR(50),
    VALOR_CONDICAO                    VARCHAR(50),
    DENOMINACAO_3                     VARCHAR(50),
    CAMPANHA_BONUS                    VARCHAR(50),
    CAMPANHA                          VARCHAR(50),
    CODIGO_FORMA                      VARCHAR(50),
    CODIGO_RESGATE_CLAROCLUBE         VARCHAR(50),
    NOME_AUTORIZADA                   VARCHAR(50),
    CLIENTE                           VARCHAR(50),
    CODIGO_DBM                        VARCHAR(50),
    NOME_1                            VARCHAR(50),
    SEXO                              VARCHAR(50),
    ESTADO_CIVIL_1                    VARCHAR(50),
    ESTADO_CIVIL_2                    VARCHAR(50),
    DATA_NASCIMENTO                   VARCHAR(50),
    EMAIL                             VARCHAR(50),
    DESCRICAO                         VARCHAR(50),
    DEPENDENTE                        VARCHAR(50),
    CONDICAO_PAGAMENTO                VARCHAR(50),
    ORGANOZACAO_VENDAS                VARCHAR(50),
    ESCRITORIOS_VENDAS                VARCHAR(50),
    REGIAO                            VARCHAR(50),
    LOCAL                             VARCHAR(50),
    DATA_CRIACAO_2                    VARCHAR(50),
    STATUS_ORDEM                      VARCHAR(255),
    DENOMINACAO_4                     VARCHAR(50),
    JUSTIFICATIVA_AN_RISCO            VARCHAR(50),
    MOTIVO_REC_AN_RISCO               VARCHAR(50),
    MOTIVO_CANCELAMENTO               VARCHAR(255),
    MOTIVO_ANALISE_SEGUNDONIVEL       VARCHAR(50),
    MOTIVO_ATUALIZADO_DADOS           VARCHAR(50),
    MOTIVO_ATUALIZADO_DADOS_2         VARCHAR(50),
    MOTIVO_REANALISE_SEGUNDONIVEL     VARCHAR(50),
    RUA_1                             VARCHAR(255),
    LOCAL_RESIDENCIAL_DIFERENTE       VARCHAR(50),
    BAIRRO_1                          VARCHAR(255),
    CODIGO_POSTAL_1                   VARCHAR(50),
    NOME                              VARCHAR(255),
    RUA_2                             VARCHAR(255),
    BAIRRO_2                          VARCHAR(255),
    CODIGO_POSTAL_2                   VARCHAR(255),
    ZONA_TRANSPORTE                   VARCHAR(255),
    NOME_ACORDO_CARTAO                VARCHAR(50),
    TELEFONE_FIXO                     VARCHAR(50),
    TELEFONE_CONTATO_1                VARCHAR(50),
    TELEFONE_CONTATO_2                VARCHAR(50),
    TELEFONE_CONTATO_3                VARCHAR(50),
    DDD                               VARCHAR(50),
    MATRICULA_CLIENTE                 VARCHAR(50),
    CPF_CLIENTE                       VARCHAR(50),
    AGRUPADOR_EPS                     VARCHAR(50),
    CODIGO_EPS                        VARCHAR(255),
    NOME_EPS                          VARCHAR(255),
    COLUMN_VAZIA                      VARCHAR(255),
    QTDE_PARCELAS                     VARCHAR(50),
    BONUS                             VARCHAR(50),
    RECARGA_MINIMA                    VARCHAR(50),
    BONUS_TOTAL                       VARCHAR(50),
    CARACTERE                         VARCHAR(50),
    ORDEM_ORIGEM                      VARCHAR(50),
    LOGIN_O_ORIGEM                    VARCHAR(50),
    LOGIN_O_DESTINO                   VARCHAR(50)
    )
    ;
    GO

    Depois rodei o processo do Insert abaixo:

     

    TRUNCATE TABLE INPUT..ZT042INPUT;

    BULK INSERT INPUT.dbo.ZT042INPUT FROM 'C:\Users\92030421\Desktop\SAP\ZT042_01012018_23012018.csv'
    WITH
    (
    FIELDTERMINATOR = '\\'
    );
    GO

    Após todo esse processo ele indica que a ultima coluna está "Verifique se o terminador de campo e da linha estão especificados corretamente", as 6 ultimas colunas dessa base estão nulas.



    terça-feira, 23 de janeiro de 2018 14:06
  • Luciano,

    Tente especificar o RowTerminator.


    Pedro Antonio Galvao Junior [MVP | MCC | MSTC | MIE | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | Professor Universitário | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]

    terça-feira, 23 de janeiro de 2018 17:06
  • Deleted
    terça-feira, 23 de janeiro de 2018 18:11
  • Opa,

    Sobre “as 6 ultimas colunas dessa base estão nulas”, no arquivo CSV elas estão algo como \\\\\\?

    Sim, possui o separador, somente não tem dados na column.

    Estou tentando essas opções que vc me passou, ai eu posto aqui, obrigado.

    quarta-feira, 24 de janeiro de 2018 00:19
  • Luciano,

    Se realmente estas seis últimas colunas não possuem dados, tente omitir as mesmas no processo de importação, uma possibilidade seria criar a tabela sem estas colunas e após a importação realizar a criação das mesmas.

    Assim você já poderia eliminar algumas possibilidades de erro no processo de carga.


    Pedro Antonio Galvao Junior [MVP | MCC | MSTC | MIE | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | Professor Universitário | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]

    quarta-feira, 24 de janeiro de 2018 17:27
  • Boa tarde,

    Por falta de retorno essa thread está encerrada.

    Se necessário favor abrir uma nova thread.

    Atenciosamente,

    Filipe B de Castro

    Esse conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita

    MSDN Community Support

    Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.

    quarta-feira, 31 de janeiro de 2018 17:59
    Moderador