Conecte-se ao banco de dados PostgreSQL a partir do Excel 2013 Power Query with Npgsql

1

Eu quero extrair dados de um banco de dados PostgreSQL na minha rede local com o Power Query. Por padrão, minha versão do Excel lista três opções no menu "Obter dados externos / do banco de dados" na faixa de opções do Power Query - "Do banco de dados do SQL Server", "Do banco de dados do Access" e "Do banco de dados do SQL Server Analysis Services". O PostgreSQL não é uma opção padrão.

Felizmente (ou assim eu pensei) existe este artigo na página de suporte oficial do Microsoft Office sobre como instalar / ativar o Ngpsql data provider for PostgreSQL para este propósito. Eu segui essas instruções, mas ainda só vejo essas três opções aparecendo. Não consegui encontrar outras instruções sobre como fazer isso por meio do Google. Veja o que eu fiz exatamente:

  1. Baixe Npgsql-2.2.5-net35.zip de aqui , esta parece ser a mais nova versão do Npgsql para .Net 3.5. Descompactado para uma pasta temporária.
  2. Copie gacutil.exe e gacutil.exe.config de outro computador com o Visual Studio para outra pasta temporária neste computador (localizada em c:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\x64\ ).
  3. Execute gacutil.exe /i "<tempfolder>\Npgsql.dll" e o mesmo com Mono.Security.dll . Recebi a mensagem Assembly successfully added to cache em ambos.
  4. Edite o arquivo C:\Windows\Microsoft.NET\Framework64\v2.0.50727\CONFIG\machine.config XML (v2.0.50727 é para .Net 3.5).
    • Adicione a linha <add description=".Net Framework Data Provider for Postgresql Server" type="Npgsql.NpgsqlFactory, Npgsql, Version=2.2.5.0, Culture=neutral, PublicKeyToken=5d8b90d52f46fda7" name="Npgsql Data Provider" invariant="Npgsql" support="FF"/> no nó <DbProviderFactories> . Isto é textualmente a partir da página de ajuda, exceto para o número da versão
    • Verificado executando gacutil.exe -l | findstr Npgsql que o número da versão e a chave pública correspondem ao que eu instalei.
  5. Este é o fim das instruções na página de ajuda. Reinicie o Excel, sem alteração nas opções do banco de dados no menu. Reinicie o computador, mesmo.
  6. Decida tentar novamente com a versão .Net 4.0. Baixe a nova versão do Npgsql da página de lançamentos, descompacte para a pasta temporária.
  7. A versão de gacutil.exe que copiei foi para .Net 3.5. Encontrou a alternativa em um diretório diferente ( c:\Program Files (x86)\Microsoft SDKs\Windows\v8.0A\bin\NETFX 4.0 Tools\x64\ ), verificou que é para 4.0 executando com a opção -h e obteve Microsoft (R) .NET Global Assembly Cache Utility. Version 4.0.30319.18020 . Copiado para esta máquina (tinha que incluir o subdiretório 1033 com algumas outras DLLs para trabalhar).
  8. Repita # 3 com novas DLLs e a versão de gacutil . Mesma mensagem de sucesso.
  9. Repita # 4 com o arquivo machine.config , desta vez no diretório v4.0.30319 .
    • Também comentou o nó que eu havia adicionado no outro arquivo.
  10. Reiniciar, ainda não há opção no menu.

Neste ponto, estou sem ideias. Eu tenho este trabalho em um par de outros computadores porque eu tinha instalado Servidor Labkey , que usa um PostgreSQL banco de dados e, aparentemente, instala o direito da DLL ao lado dele. Ele aparece no menu simplesmente "Do banco de dados PostgreSQL". Claro que eu poderia apenas instalar o Labkey Server neste computador, mas isso parece uma solução feia que eu gostaria de evitar.

    
por JaredL 03.08.2015 / 21:38

2 respostas

3

Finalmente consegui isso funcionar. Parece que, por algum motivo, você precisa da edição Professional Plus do Microsoft Office para ativar as conexões do PostgreSQL. Com esta versão recentemente instalada em um novo computador, eu tinha a opção PostgreSQL em Power Query -> From Database disponível por padrão. Uma vez que eu selecionei essa opção, dei o nome do host e do banco de dados, então nome de usuário e senha, recebi um erro dizendo que o provedor de dados Ngpsql não pôde ser encontrado. Assim, a opção que aparece no menu é simplesmente devido à versão do MS Office e não se o provedor Ngpsql está instalado. Eu fui para esta página mencionada acima, baixei o Setup_Npgsql-2.2.5.0-r3-net40.exe installer, executei, reiniciei o Excel e tudo funcionou.

    
por 25.09.2015 / 00:24
1

Eu não tenho nenhuma experiência específica com o PostgreSQL, mas em geral com drivers de banco de dados é fundamental começar com um entendimento se o programa do qual você está começando tem 32 bits (x86) ou 64 bits (x64) arquitetura. Como você pode começar a ver pelos nomes confusos destes, a Microsoft fez um hash total desta IMO.

Para o Excel 2013, vá para Arquivo / Conta / Sobre o Excel e observe o final da primeira linha do texto. O Excel (como todos os outros programas) funcionará apenas com drivers da mesma arquitetura.

A página de documentação do Power Query vinculada a sugestões, mas é um pouco enganadora quando dizem "Selecione o driver que corresponde à sua instalação do Power Query" - na verdade, é a sua instalação do Excel que define a arquitetura. A arquitetura do Power Query também depende totalmente da arquitetura do Excel.

Eu baixei o arquivo Ngpsql 2.2.5 R3 do link na página Power Query - não está muito claro, mas considerando que o assistente de instalação é de 32 bits - sugere instalar na pasta C:\Program Files (x86)\The Npgsql Development Team\Npgsql

Se essa é a única fonte, sugiro que você precise de uma instalação do Excel de 32 bits para que isso funcione.

    
por 06.08.2015 / 01:27