none
OpenRowset Não esta separando a coluna RRS feed

  • Discussão Geral

  • Caros,

    estou usando OpenRowSet para carregar um arquivo CSV separado por |, o sql server carrega o arquivo mas não separa as colunas.

    SELECT *
           FROM
           OPENROWSET('MICROSOFT.ACE.OLEDB.12.0',
                               'TEXT;
       FORMAT=''CSV'';
       DELIMITED=''|'';
       DATABASE=C:\SMS;',
                               'SELECT TOP 10 * FROM ASSIA2.CSV ') A

    quarta-feira, 16 de janeiro de 2019 14:41

Todas as Respostas

  • Deleted
    quarta-feira, 16 de janeiro de 2019 14:59
  • Sugiro voce utilizar um arquivo de formato com a extensão FMT.

    Aqui voce encontra documentação de como criar. https://docs.microsoft.com/pt-br/sql/relational-databases/import-export/create-a-format-file-sql-server?view=sql-server-2017

    Seu codigo ficaria dessa forma

    SELECT *
    FROM OPENROWSET(BULK 'C:\SMS\ASSIA2.CSV',
    FORMATFILE = 'C:\SMS\ARQUIVO_DE_FORMATO.FMT' ) AS T


    Fabiano Carvalho

    quarta-feira, 16 de janeiro de 2019 15:45
  • Rodrigo, o provedor Microsoft ACE OLEDB trata os parâmetros FORMAT e DELIMITED? Você tem a documentação dele?

    Consultando alguns casos semelhantes na web, o mais próximo que encontrei foi
         Microsoft.ACE.OLEDB.12.0;Data Source=C:\SMS;Extended Properties="text;HDR=No;FMT=Delimited(|);"
    obtido do artigo OLEDB Reading a : Delimited Text File.

    Inclusive nesse artigo é mencionada a criação de arquivo schema.ini como solução.

    Qual é a versão do SQL Server?

    Para importação de arquivos de texto (formatos CSV, DSV, XML, JSON etc) sugiro a leitura do artigo “Importação de dados em massa”.


    José Diz     Belo Horizonte, MG - Brasil     [Linked In]   [e-mail]   [Porto SQL]


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

    José,

    Concordo, somente a opção Format esta disponível na atual documentação e sendo compatível somente a partir da versão 2017.


    Pedro Antonio Galvão 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]

    quinta-feira, 17 de janeiro de 2019 13:00
  • Rodrigo,

    Veja se o exemplo abaixo te ajuda: 

    -- Exemplo 3 - Especificação do terminador de campo que usa explicitamente um arquivo de formato --
    Create Table TabelaDadosExternos 
    (PersonID SmallInt,
     FirstName Varchar(25),
     LastName Varchar(30),
     BirthDate Date)
    Go
    
    -- Importando os dados --
    Bulk Insert TabelaDadosExternos   
    From 'S:\Faculdades\FATEC\Banco de Dados II\Práticas\Aula 17\Práticas - Aula 17 - Dados - DataFile.dat'  
    With (FormatFile = 'S:\Faculdades\FATEC\Banco de Dados II\Práticas\Aula 17\Práticas - Aula 17 - Dados - FormatFile.fmt')
    Go  
    
    -- Consultando a Tabela xTable --
    Select * From TabelaDadosExternos
    Go

    Aqui apresento a formatação do arquivo .fmt:

    13.0
    4
    1       SQLCHAR             0       7       ","      1     PersonID               ""
    2       SQLCHAR             0       25      ","      2     FirstName              SQL_Latin1_General_CP1_CI_AS
    3       SQLCHAR             0       30      ","      3     LastName               SQL_Latin1_General_CP1_CI_AS
    4       SQLCHAR             0       11      "\r\n"   4     BirthDate              ""


    Pedro Antonio Galvão 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]

    quinta-feira, 17 de janeiro de 2019 13:02