Inquiridor
OpenRowset Não esta separando a coluna

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
Todas as Respostas
-
-
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
-
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]
-
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]