Compartilhar via


Importar dados do Excel para o SQL Server ou Banco de Dados SQL do Azure

Aplica-se a:SQL ServerBanco de Dados SQL do Azure

Há várias maneiras de importar dados de arquivos do Excel para o SQL Server ou para o Banco de Dados SQL do Azure. Alguns métodos permitem que você importe dados em uma única etapa diretamente de arquivos do Excel; outros métodos exigem que você exporte os dados do Excel como texto (arquivo CSV) antes de importá-los.

Este artigo resume os métodos usados com frequência e fornece links para informações mais detalhadas. Uma descrição completa das ferramentas e serviços complexos, como SSIS ou Azure Data Factory, está além do escopo deste artigo. Para obter mais informações sobre a solução que lhe interessa, siga os links fornecidos.

Lista de métodos

Existem duas maneiras de importar dados do Excel. Você precisa instalar o SQL Server Management Studio (SSMS) para usar algumas dessas ferramentas.

É possível usar as seguintes ferramentas para importar dados do Excel:

Exportar para texto primeiro (SQL Server e Banco de Dados SQL do Azure) Diretamente do Excel (somente SQL Server local)
Assistente de Importação de Arquivo Simples Assistente de Importação e Exportação do SQL Server
instrução BULK INSERT SQL Server Integration Services (SSIS)
Ferramenta de cópia em massa (bcp) Função OPENROWSET
Assistente de Cópia (Azure Data Factory)
Fábrica de dados do Azure

Se quiser importar várias planilhas de uma pasta de trabalho do Excel, normalmente você precisará executar cada uma dessas ferramentas uma vez para cada planilha.

Para mais informações, confira limitações e problemas conhecidos para carregar dados de ou para arquivos do Excel.

Assistente de Importação e Exportação

Importe dados diretamente de arquivos do Excel usando o Assistente de Importação e Exportação do SQL Server. Você pode salvar as configurações como um pacote SSIS (SQL Server Integration Services) que você pode personalizar e reutilizar mais tarde.

  1. No SQL Server Management Studio, conecte-se a uma instância do SQL Server Mecanismo de Banco de Dados.

  2. Expanda os Bancos de dados.

  3. Clique com o botão direito do mouse em um banco de dados.

  4. Selecione Tarefas.

  5. Escolha Importar Dados ou Exportar Dados:

    Captura de tela do assistente de inicialização do SSMS.

Isso inicia o assistente:

Captura de tela de Conectar-se a uma fonte de dados do Excel.

Para obter mais informações, consulte os seguintes artigos:

Integration Services (SSIS)

Se você estiver familiarizado com o SSIS (SQL Server Integration Services) e não quiser executar o Assistente de Importação e Exportação do SQL Server, você pode criar um pacote do SSIS que usa a origem do Excel e o destino do SQL Server no fluxo de dados.

Para obter mais informações, consulte os seguintes artigos:

Para aprender a compilar pacotes do SSIS, veja o tutorial Como criar um pacote do ETL.

Captura de tela dos componentes no fluxo de dados.

OPENROWSET e servidores vinculados

Importante

No Banco de Dados SQL do Azure, não é possível fazer uma importação diretamente no Excel. Primeiro, é necessário exportar os dados para um arquivo de texto (CSV).

Os exemplos a seguir usam o provedor JET, pois o provedor ACE incluído no Office que se conecta às fontes de dados do Excel destina-se ao uso interativo do lado do cliente.

Consultas distribuídas

Importe dados diretamente para o SQL Server de arquivos do Excel usando a função OPENROWSET ou OPENDATASOURCE do Transact-SQL. Esse uso é chamado de consulta distribuída.

Importante

No Banco de Dados SQL do Azure, não é possível fazer uma importação diretamente no Excel. Primeiro, é necessário exportar os dados para um arquivo de texto (CSV).

Antes de executar uma consulta distribuída, você precisa habilitar a opção de configuração do servidor Ad Hoc Distributed Queries, conforme mostra o exemplo a seguir. Para mais informações, consulte Configuração do servidor: consultas distribuídas ad hoc.

sp_configure 'show advanced options', 1;
RECONFIGURE;
GO
sp_configure 'Ad Hoc Distributed Queries', 1;
RECONFIGURE;
GO

O exemplo de código a seguir usa o OPENROWSET para importar os dados da planilha Sheet1 do Excel para uma nova tabela do banco de dados.

USE ImportFromExcel;
GO
SELECT * INTO Data_dq
FROM OPENROWSET('Microsoft.JET.OLEDB.4.0',
    'Excel 8.0; Database=C:\Temp\Data.xls', [Sheet1$]);
GO

Este é o mesmo exemplo com OPENDATASOURCE.

USE ImportFromExcel;
GO
SELECT * INTO Data_dq
FROM OPENDATASOURCE('Microsoft.JET.OLEDB.4.0',
    'Data Source=C:\Temp\Data.xls;Extended Properties=Excel 8.0')...[Sheet1$];
GO

Para acrescentar os dados importados a uma tabela existente em vez de criar uma nova tabela, use a sintaxe INSERT INTO ... SELECT ... FROM ..., em vez da sintaxe SELECT ... INTO ... FROM ... usada nos exemplos anteriores.

Para consultar os dados do Excel sem importá-los, basta usar a sintaxe SELECT ... FROM ... padrão.

Para obter mais informações sobre consultas distribuídas, consulte os artigos a seguir:

1 As consultas distribuídas ainda têm suporte no SQL Server, mas a documentação desse recurso não é atualizada.

Servidores vinculados

Configure também uma conexão persistente do SQL Server com o arquivo do Excel como um servidor vinculado. O exemplo a seguir importa os dados da planilha Data no servidor vinculado existente EXCELLINK do Excel para uma nova tabela de banco de dados do SQL Server chamada Data_ls.

USE ImportFromExcel;
GO
SELECT * INTO Data_ls FROM EXCELLINK...[Data$];
GO

Você pode criar um servidor vinculado no SQL Server Management Studio (SSMS) ou executando o procedimento armazenado do sistema sp_addlinkedserver, conforme mostra o exemplo a seguir.

DECLARE @RC INT;
DECLARE @server NVARCHAR(128);
DECLARE @srvproduct NVARCHAR(128);
DECLARE @provider NVARCHAR(128);
DECLARE @datasrc NVARCHAR(4000);
DECLARE @location NVARCHAR(4000);
DECLARE @provstr NVARCHAR(4000);
DECLARE @catalog NVARCHAR(128);

-- Set parameter values
SET @server = 'EXCELLINK';
SET @srvproduct = 'Excel';
SET @provider = 'Microsoft.JET.OLEDB.4.0';
SET @datasrc = 'C:\Temp\Data.xls';
SET @provstr = 'Excel 8.0';

EXEC @RC = [master].[dbo].[sp_addlinkedserver] @server,
    @srvproduct,
    @provider,
    @datasrc,
    @location,
    @provstr,
    @catalog;

Para obter mais informações sobre servidores vinculados, consulte os artigos a seguir:

Para obter exemplos e informações sobre servidores vinculados e consultas distribuídas, veja o artigo a seguir:

Pré-requisitos

Para usar o restante dos métodos descritos nesta página, (a instrução BULK INSERT, a ferramenta bcp ou o Azure Data Factory), primeiro você precisa exportar os dados do Excel para um arquivo de texto.

Salvar dados do Excel como texto

No Excel, clique em Arquivo | Salvar como e Texto (Delimitado por tabulação) (*.txt) ou CSV (Delimitado por vírgula) (*.csv) como o tipo de arquivo de destino.

Se você quiser exportar várias planilhas da pasta de trabalho, selecione cada uma e repita este procedimento. O comando Salvar como exporta apenas a planilha ativa.

Dica

Para obter melhores resultados com as ferramentas de importação de dados, salve as planilhas que contêm os cabeçalhos de coluna e as linhas de dados. Se os dados salvos contiverem títulos de página, linhas em branco, observações e assim por diante, você poderá ver resultados inesperados ao importar os dados posteriormente.

Assistente de Importação de Arquivo Simples

Importe dados salvos como arquivos de texto percorrendo as páginas do Assistente Importar Arquivo Simples.

Conforme descrito anteriormente na seçãoPré-requisitos, você precisa exportar os dados do Excel como texto antes de usar o Assistente de Importação de Arquivo Simples para importá-los.

Para saber mais sobre o Assistente Importar Arquivo Simples, confira Importação de arquivo simples para o Assistente do SQL.

Comando BULK INSERT

BULK INSERT é um comando do Transact-SQL que você pode executar no SQL Server Management Studio. O exemplo a seguir carrega os dados no arquivo delimitado por vírgulas Data.csv para uma tabela de banco de dados existente.

Conforme descrito anteriormente na seção Pré-requisitos, você deve exportar os dados do Excel como texto antes que possa usar o BULK INSERT para importá-lo. BULK INSERT não pode ler diretamente arquivos de Excel. Com o comando BULK INSERT, você pode importar um arquivo CSV armazenado localmente ou no Armazenamento de Blobs do Azure.

USE ImportFromExcel;
GO
BULK INSERT Data_bi FROM 'C:\Temp\data.csv'
   WITH (
      FIELDTERMINATOR = ',',
      ROWTERMINATOR = '\n'
);
GO

Para obter mais informações e exemplos do SQL Server e do Banco de Dados SQL do Azure, confira os seguintes artigos:

A ferramenta de cópia em massa (bcp)

A ferramenta bcp é executada no prompt de comando. O exemplo a seguir carrega os dados no arquivo delimitado por vírgulas Data.csv para uma tabela de banco de dados do Data_bcp existente.

Conforme descrito anteriormente na seção Pré-requisitos, você deve exportar os dados do Excel como texto antes que possa usar o bcp para importá-lo. A ferramenta bcp não pode ler diretamente arquivos de Excel. Use-o para fazer uma importação para o SQL Server ou o Banco de Dados SQL de um arquivo de teste (CSV) salvo no armazenamento local.

Importante

Para um arquivo de texto (CSV) armazenado no Armazenamento de Blobs do Azure, use BULK INSERT ou OPENROWSET. Por exemplo, consulte Usar BULK INSERT ou OPENROWSET(BULK...) para importar dados para o SQL Server.

bcp.exe ImportFromExcel..Data_bcp in "C:\Temp\data.csv" -T -c -t ,

Para saber mais sobre bcp, veja os seguintes artigos:

Assistente de Cópia (ADF)

Importe dados salvos como arquivos de texto percorrendo as páginas do Assistente de Cópia do ADF (Azure Data Factory).

Conforme descrito anteriormente na seção Pré-requisitos, você deve exportar os dados do Excel como texto antes que possa usar o Azure Data Factory para importá-lo. O Data Factory não pode ler arquivos do Excel diretamente.

Para obter mais informações sobre o Assistente de Cópia, veja os artigos a seguir:

Fábrica de dados do Azure

Se você estiver familiarizado com o Azure Data Factory e não quiser executar o Assistente de cópia, crie um pipeline com uma atividade de cópia que copia do arquivo de texto para o SQL Server ou para o Banco de Dados SQL do Azure.

Conforme descrito anteriormente na seção Pré-requisitos, você deve exportar os dados do Excel como texto antes que possa usar o Azure Data Factory para importá-lo. O Data Factory não pode ler arquivos do Excel diretamente.

Para obter mais informações sobre como usar essas fontes e coletores do Data Factory, veja os artigos a seguir:

Para aprender a copiar dados com o Azure Data Factory, veja os artigos a seguir: