none
Tratamento de Datas - Sql Server 2014 RRS feed

  • Pergunta

  • Prezados, bom dia.

    Mais uma vez recorro a vossa ajuda.

    Estou exportando um select que possui um campo de data e hora, o qual é retirado de um banco SQLite no formato CSV(segue uma linha do arquivo):

    10.5.38.1,,,10.5.38.1,,Unknown,0,0,,,,,,,"2015-07-29 17:27:40","BATAGUASSU",s0656


    Com este arquivo .CSV, faço o import para o SQL Server 2014 via BULK INSERT.

    O problema começa aqui, na tabela de destino o campo que irá receber a data está em formato VARCHAR portanto é a leitura de uma string sendo gravada num campo string, porém mesmo assim recebo a seguinte mensagem de erro de conversão:

    C:\Windows\system32>SQLCMD -i c:\1-Carga\insert01.sql
    Msg 4864, Level 16, State 1, Server S1205, Line 1
    Erro de conversão de dados de carregamento em massa (erro de correspondência ou caráter inválido para a página de códigos especificada) para a linha 2, coluna 15 (LAST_UPDATE).

    Já fiz alguns testes e quando removo as ""(aspas) manualmente do valor de data ela é importada corretamente, mas como o arquivo é gerado em CSV, não tenho parâmetro para retira-las por script.

    Este é o problema, agradeço a quem detenha de mais experiencia na plataforma e possa dispor de algum tempo para me ajudar.




    terça-feira, 18 de agosto de 2015 15:04

Respostas

Todas as Respostas

  • Boas,

    Qual o tamanho do campo?

    Atenciosamente, Roberto Alves

    quarta-feira, 19 de agosto de 2015 13:02
  • varchar(100)
    quarta-feira, 19 de agosto de 2015 13:47
  • Bom dia,

    Sempre que trabalho com BULK INSERT, trabalho com tabelas #TEMP_TABELA ou seja pego os dados do jeito que foi exportado, jogo em uma tabela temp e depois faço insert com select da tabela temp para tabela oficial, pois dessa forma consigo manipular os dados quando necessário.

    Caso queira exemplo me avise.


    Atenciosamente, Ruberlei. www.t-sql.com.br

    quarta-feira, 19 de agosto de 2015 14:57
  • Olá Ruberlei, obrigado pela sugestão.

    Mas no meu caso eu não consigo é importar um campo data separado por "" para a tabela, seja ela temp ou não.

    O campo que receberia a data em formato string está como VARCHAR(100), desconfio que eu precise configurar algo no Server relacionado a região e formatos de data.

    Pois no BULK INSERT o servidor não precisa, nem deveria converter data quando se trata de valor string para campo string.


    quarta-feira, 19 de agosto de 2015 15:07
  • Wfrancischini,

    Se entendi, os dados de data estão sendo repassados para um campo Varchar(100).

    É isso? Qual é a atual formatação deste valores data?

    Provavelmente alguma conversão que você esta fazendo ou forçando esta gerando este erro!!!


    Pedro Antonio Galvao Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | Professor Universitario | SoroCodigos | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]


    quarta-feira, 19 de agosto de 2015 18:12
  • Junior, a questão é que o BULK não grava o texto "2014-10-10 14:14:14" dentro de um campo VARCHAR, mas tirando a aspas manualmente de uma linha de testes, o bulk é concluído, quanto a isso ok, apesar de não achar uma explicação pra isso.

    Mas fazendo os testes com outros formatos de campo, deu tudo certo ao importar para um campo Text, tendo a informação na tabela é mais fácil tratar os dados para irem para um campo smalldate ou date.

    Isso resolve meu problema, de certa forma, mas não esclarece os erros... ;)

    Enfim, agora tenho a informação sendo gravada desta forma num campo Text ("2015-08-10 08:32:01").

    Alguma ideia de como posso passar este formato americano para o formato brasileiro e remover as aspas?(No Oracle usaria um replace() temos algum semelhante para Sql Server?)

    Agradeço se puderem mandar um modelo, no entanto sigo pesquisando... pois no Oracle era simples, fazer os Substr() e to_char() da vida, mas no SQL Server ainda patino...

    Obrigado.

    quarta-feira, 19 de agosto de 2015 19:56
  • Bom dia,

    Veja esses exemplos LINK


    Atenciosamente, Ruberlei. www.t-sql.com.br

    • Sugerido como Resposta Ruberlei quinta-feira, 20 de agosto de 2015 17:26
    • Marcado como Resposta Wfrancischini quinta-feira, 20 de agosto de 2015 17:37
    quinta-feira, 20 de agosto de 2015 14:21
  • Obrigado a todos, consegui contornar a situação com a ajuda de todos.

    Abs.

    • Marcado como Resposta Wfrancischini quinta-feira, 20 de agosto de 2015 17:38
    • Não Marcado como Resposta Wfrancischini quinta-feira, 20 de agosto de 2015 17:38
    quinta-feira, 20 de agosto de 2015 17:37