Como importar dados do Excel para o SQL Server

IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine translation ou MT), não tendo sido portanto revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática… erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes ao software de tradução automática (MT). Obrigado.

Clique aqui para ver a versão em Inglês deste artigo: 321686
Sumário
Este artigo passo a passo demonstra como importar dados de folhas de cálculo do Microsoft Excel para bases de dados do Microsoft SQL Server utilizando uma variedade de métodos.

back to the top

Descrição da técnica

Os exemplos neste artigo Importar dados do Excel utilizando:
  • Serviços de transformação de dados do SQL Server (DTS)
  • Serviços de Integração do Microsoft SQL Server 2005(SSIS)
  • Servidores do SQL Server ligada
  • Consultas do SQL Server distributed
  • ActiveX Data Objects (ADO) e o fornecedor de Microsoft OLE DB para SQL Server
  • ADO e o fornecedor de Microsoft OLE DB para o Jet 4.0
back to the top

Requisitos

A lista seguinte descreve o hardware recomendado, software, infra-estrutura de rede e service packs que são necessários:
  • Instância disponível do Microsoft SQL Server 7.0 ou Microsoft SQL Server 2000 ou Microsoft SQL Server 2005
  • Microsoft Visual Basic 6.0 para as amostras de ADO que utilizam o Visual Basic
Partes deste artigo partem do princípio de que está familiarizado com os seguintes tópicos:
  • Serviços de transformação de dados
  • Servidores ligados e distribuídas de consultas
  • Desenvolvimento de ADO no Visual Basic
back to the top

Amostras

Importação vs. acrescentar

As instruções de SQL de exemplo que são utilizadas no presente artigo demonstram consultas criar tabela que importar dados do Excel para uma nova tabela de SQL Server utilizando a seleccionar... EM... DE sintaxe. Pode converter estas instruções para consultas de acrescentar utilizando INSERT INTO... SELECCIONE... DE sintaxe enquanto continuam a referenciar os objectos de origem e de destino, tal como mostrado nestes exemplos de código.

back to the top

Utilização DTS ou SSIS

Pode utilizar o Assistente para importar dados Transformation Services (DTS) para SQL Server ou SQL Server Import e Assistente de exportação para importar dados do Excel para tabelas do SQL Server. Quando são percorrendo o assistente e seleccionar as tabelas de origem do Excel, lembre-se de que os nomes de objecto do Excel que são anexados com um sinal de dólar ($) representam folhas de cálculo (por exemplo, Folha1$), e que os nomes de objectos simples sem o sinal de cifrão representam Excel intervalos com nome.

back to the top

Utilizar um servidor ligado

Para simplificar a consultas, pode configurar um livro do Excel como um servidor ligado em SQL Server.Para obter informações adicionais, clique no número de artigo abaixo para visualizar o artigo na Microsoft Knowledge Base:
306397 COMO: Utilizar Excel com o SQL Server servidores ligados e distribuídos consultas
O seguinte código importa os dados da folha de cálculo clientes no servidor ligado do Excel "EXCELLINK" para uma nova tabela de SQL Server com o nome XLImport1:
SELECT * INTO XLImport1 FROM EXCELLINK...[Customers$]				
Também pode executar a consulta contra a origem de um modo passthrough utilizando ABRIRCONSULTA do seguinte modo:
SELECT * INTO XLImport2 FROM OPENQUERY(EXCELLINK,    'SELECT * FROM [Customers$]')				
back to the top

Utilizar consultas distribuídas

Se não pretender configurar uma ligação persistente para o livro do Excel como um servidor ligado, pode importar dados para um fim específico utilizando o OPENDATASOURCE ou a função OPENROWSET. Os seguintes exemplos de código também importar os dados da folha de cálculo Excel clientes para novas tabelas de SQL Server:
SELECT * INTO XLImport3 FROM OPENDATASOURCE('Microsoft.Jet.OLEDB.4.0','Data Source=C:\test\xltest.xls;Extended Properties=Excel 8.0')...[Customers$]SELECT * INTO XLImport4 FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0','Excel 8.0;Database=C:\test\xltest.xls', [Customers$])SELECT * INTO XLImport5 FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0','Excel 8.0;Database=C:\test\xltest.xls', 'SELECT * FROM [Customers$]')				
back to the top

Utilizar o ADO e SQLOLEDB

Quando estiver ligado ao SQL Server num aplicativo de ADO utilizando o Microsoft OLE DB para SQL Server (SQLOLEDB), pode utilizar a mesma sintaxe de "consulta distribuída" a partir de Utilizar consultas distribuídas secção importar dados do Excel para o SQL Server.

O seguinte exemplo de código do Visual Basic 6.0 requer que adicione uma referência de projecto para o ActiveX Data Objects (ADO). Este exemplo de código também demonstra como utilizar OPENDATASOURCE e OPENROWSET através de uma ligação de SQLOLEDB.
    Dim cn As ADODB.Connection    Dim strSQL As String    Dim lngRecsAff As Long    Set cn = New ADODB.Connection    cn.Open "Provider=SQLOLEDB;Data Source=<server>;" & _        "Initial Catalog=<database>;User ID=<user>;Password=<password>"    'Import by using OPENDATASOURCE.    strSQL = "SELECT * INTO XLImport6 FROM " & _        "OPENDATASOURCE('Microsoft.Jet.OLEDB.4.0', " & _        "'Data Source=C:\test\xltest.xls;" & _        "Extended Properties=Excel 8.0')...[Customers$]"    Debug.Print strSQL    cn.Execute strSQL, lngRecsAff, adExecuteNoRecords    Debug.Print "Records affected: " & lngRecsAff    'Import by using OPENROWSET and object name.    strSQL = "SELECT * INTO XLImport7 FROM " & _        "OPENROWSET('Microsoft.Jet.OLEDB.4.0', " & _        "'Excel 8.0;Database=C:\test\xltest.xls', " & _        "[Customers$])"    Debug.Print strSQL    cn.Execute strSQL, lngRecsAff, adExecuteNoRecords    Debug.Print "Records affected: " & lngRecsAff    'Import by using OPENROWSET and SELECT query.    strSQL = "SELECT * INTO XLImport8 FROM " & _        "OPENROWSET('Microsoft.Jet.OLEDB.4.0', " & _        "'Excel 8.0;Database=C:\test\xltest.xls', " & _        "'SELECT * FROM [Customers$]')"    Debug.Print strSQL    cn.Execute strSQL, lngRecsAff, adExecuteNoRecords    Debug.Print "Records affected: " & lngRecsAff    cn.Close    Set cn = Nothing				
back to the top

Utilizar o ADO e o fornecedor de Jet

O exemplo na secção anterior utiliza ADO com o fornecedor SQLOLEDB para estabelecer ligação com o destino da importação de Excel para SQL. Também pode utilizar o fornecedor de OLE DB para o Jet 4.0 para estabelecer ligação com a origem do Excel.

O Jet database engine pode referenciar bases de dados externas em instruções SQL utilizando uma sintaxe especial que tem três formatos diferentes:
  • [Caminho completo para a base de dados do Microsoft Access]. [Nome da tabela]
  • [Nome do ISAM;Cadeia de ligação do ISAM]. [Nome da tabela]
  • [ODBC;Cadeia de ligação ODBC]. [Nome da tabela]
Esta secção utiliza o formato de terceiro para efectuar uma ligação ODBC à base de dados do SQL Server de destino. Pode utilizar um nome de origem de dados de ODBC (DSN) ou uma cadeia de ligação sem DSN:
DSN:    [odbc;DSN=<DSN name>;UID=<user>;PWD=<password>]DSN-less:   [odbc;Driver={SQL Server};Server=<server>;Database=<database>;       UID=<user>;PWD=<password>]				
O seguinte exemplo de código do Visual Basic 6.0 requer que adicione uma referência de projecto ao ADO. Este exemplo de código demonstra como importar dados do Excel para o SQL Server através de uma ligação ADO utilizando o fornecedor do Jet 4.0.
    Dim cn As ADODB.Connection    Dim strSQL As String    Dim lngRecsAff As Long    Set cn = New ADODB.Connection    cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _        "Data Source=C:\test\xltestt.xls;" & _        "Extended Properties=Excel 8.0"        'Import by using Jet Provider.    strSQL = "SELECT * INTO [odbc;Driver={SQL Server};" & _        "Server=<server>;Database=<database>;" & _        "UID=<user>;PWD=<password>].XLImport9 " & _        "FROM [Customers$]"    Debug.Print strSQL    cn.Execute strSQL, lngRecsAff, adExecuteNoRecords    Debug.Print "Records affected: " & lngRecsAff            cn.Close    Set cn = Nothing				
Também pode utilizar esta sintaxe, que o fornecedor de Jet suporta, para importar dados do Excel para outras bases de dados do Microsoft Access, bases de dados de acesso sequencial indexado (ISAM) do método ("ambiente de trabalho") ou bases de dados ODBC.

back to the top

Resolução de problemas

  • Lembre-se de que os nomes de objectos do Excel que são anexados com um sinal de dólar ($) representam folhas de cálculo (por exemplo, Folha1$) e que os nomes de objectos simples representam Excel intervalos com nome.
  • Em algumas circunstâncias, especialmente quando designar os dados de origem do Excel utilizando o nome da tabela em vez de uma consulta de selecção, as colunas na tabela de SQL Server de destino são redispostas por ordem alfabética.Para obter informações adicionais sobre este problema com o fornecedor de Jet, clique no número de artigo abaixo para visualizar o artigo na Microsoft Knowledge Base:
    299484 PRB: Colunas são ordenadas por ordem alfabética quando utilizar ADOX para obter as colunas da tabela do Access
  • Quando o fornecedor de Jet determina que uma coluna do Excel contém texto misto e dados numéricos, o fornecedor de Jet selecciona o tipo de dados "maioria" e devolve valores não correspondente como valores nulos.Para obter informações adicionais sobre como resolver este problema, clique no número de artigo abaixo para visualizar o artigo na Microsoft Knowledge Base:
    194124 Problema: O Excel valores devolvido como nulo utilizando OpenRecordset DAO
back to the top
Referências
Para obter informações adicionais sobre como utilizar o Excel como uma origem de dados, clique no número de artigo abaixo para visualizar o artigo na Microsoft Knowledge Base:
257819 COMO: Utilizar o ADO com dados do Excel do Visual Basic ou VBA
Para obter informações adicionais sobre como transferir dados para o Excel, clique nos números de artigo abaixo para visualizar os artigos na Microsoft Knowledge Base:
295646 COMO: Transferir os dados de origem de dados de ADO para o Excel com o ADO
247412 INFO: Métodos para transferir dados para o Excel a partir do Visual Basic
246335 COMO: Transferir os dados de um conjunto de registos ADO para o Excel com a automatização
319951 COMO: Transferir dados para o Excel, utilizando serviços de transformação de dados do SQL Server
306125 COMO: Importar dados do SQL Server para o Microsoft Excel
back to the top
jet do sql ado dts sqloledb do Excel

Aviso: Este artigo foi traduzido automaticamente

Propriedades

ID do Artigo: 321686 - Última Revisão: 06/11/2016 22:33:00 - Revisão: 6.0

Microsoft Excel 2000 Standard Edition, Microsoft SQL Server 2000 Standard Edition, Microsoft SQL Server 2000 64-bit Edition, Microsoft SQL Server 7.0 Standard Edition, Microsoft Excel 2002 Standard Edition, Microsoft Excel 97 Standard Edition, Microsoft SQL Server 2005 Developer Edition, Microsoft SQL 2005 Server Enterprise, Microsoft SQL Server 2005 Standard Edition, Microsoft SQL 2005 Server Workgroup

  • kbhowtomaster kbjet kbmt KB321686 KbMtpt
Comentários