Stellen Sie über Excel 2013 Power Query mit Npgsql eine Verbindung zur PostgreSQL-Datenbank her

8933
JaredL

Ich möchte mit Power Query Daten aus einer PostgreSQL-Datenbank in meinem lokalen Netzwerk abrufen. Standardmäßig listet meine Excel-Version drei Optionen im Menü "Externe Daten abrufen / Aus Datenbank" auf der Multifunktionsleiste "Power Query" auf: "Aus SQL Server-Datenbank", "Aus Access-Datenbank" und "Aus SQL Server Analysis Services-Datenbank". PostgreSQL ist keine Standardoption.

Zum Glück (oder so dachte ich) gibt es diese Artikel auf der offiziellen Microsoft Office - Support - Seite, wie die Installation / Aktivierung Ngpsql Data Provider für PostgreSQL für diesen Zweck. Ich habe diese Anweisungen befolgt, sehe aber nur diese drei Optionen. Ich konnte keine anderen Anweisungen finden, wie dies bei Google möglich ist. Folgendes habe ich genau gemacht:

  1. Download Npgsql-2.2.5-net35.zipvon hier, dies scheint die neueste Version von Npgsql für .Net 3.5 zu sein. In einen temporären Ordner entpackt.
  2. Kopieren Sie gacutil.exeund gacutil.exe.configvon einem anderen Computer mit Visual Studio in einen anderen temporären Ordner auf diesem Computer (gefunden in c:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\x64\).
  3. Laufen gacutil.exe /i "<tempfolder>\Npgsql.dll"und gleich mit Mono.Security.dll. Bekam Nachricht Assembly successfully added to cacheauf beiden.
  4. Bearbeiten Sie die C:\Windows\Microsoft.NET\Framework64\v2.0.50727\CONFIG\machine.configXML-Datei (v2.0.50727 ist für .NET 3.5).
    • In Zeile <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"/>in Knoten <DbProviderFactories>. Dies ist wörtlich von der Hilfeseite mit Ausnahme der Versionsnummer
    • Verifiziert durch Ausführen, gacutil.exe -l | findstr Npgsqldass die Versionsnummer und der öffentliche Schlüssel dem entsprechen, was ich installiert habe.
  5. Dies ist das Ende der Anweisungen auf der Hilfeseite. Starten Sie Excel neu, keine Änderung der Datenbankoptionen im Menü. Starten Sie den Computer erneut.
  6. Versuchen Sie es erneut mit der .NET 4.0-Version. Laden Sie die neue Version von Npgsql von der Freigabeseite herunter, und entpacken Sie sie in den temporären Ordner.
  7. Die Version, die gacutil.exeich kopiert habe, war für .NET 3.5. Fand die Alternative in einem anderen Verzeichnis ( c:\Program Files (x86)\Microsoft SDKs\Windows\v8.0A\bin\NETFX 4.0 Tools\x64\), verifiziert, dass es für 4.0 ist, indem sie mit dem -hSwitch läuft und bekam Microsoft (R) .NET Global Assembly Cache Utility. Version 4.0.30319.18020. Auf diese Maschine kopiert (musste das 1033Unterverzeichnis mit einigen anderen DLLs enthalten, damit es funktioniert).
  8. Wiederholen Sie # 3 mit neuen DLLs und Version von gacutil. Gleiche Erfolgsmeldung.
  9. Wiederholen Sie # 4 mit der machine.configDatei, diesmal im v4.0.30319Verzeichnis.
    • Kommentierte auch den Knoten aus, den ich in der anderen Datei hinzugefügt hatte.
  10. Neustart, noch keine Option im Menü.

An diesem Punkt habe ich keine Ideen mehr. Ich habe dies auf einigen anderen Computern, da ich Labkey Server installiert hatte, der eine PostgreSQL-Datenbank verwendet und anscheinend die richtigen DLLs nebenan installiert. Es erscheint im Menü als "From PostgreSQL database". Natürlich könnte ich Labkey Server einfach auf diesem Computer installieren, aber das scheint eine hässliche Lösung zu sein, die ich vermeiden möchte.

1
Welche Version von Power Query führen Sie aus? Suchen Sie im PQ-Menüband nach der Schaltfläche "Info". Mike Honey vor 8 Jahren 0
Versionsnummer ist "2.24.4064.242". Ich dachte, ich habe es gerade aktualisiert. JaredL vor 8 Jahren 0

2 Antworten auf die Frage

3
JaredL

Endlich hat das funktioniert. Es scheint, dass Sie aus irgendeinem Grund die Professional Plus Edition von Microsoft Office benötigen, um PostgreSQL-Verbindungen zu aktivieren. Da diese Version auf einem neuen Computer neu installiert wurde, Power Query -> From Databasestand standardmäßig die PostgreSQL-Option zur Verfügung. Nachdem ich diese Option ausgewählt und den Host- und Datenbanknamen sowie den Benutzernamen und das Kennwort angegeben hatte, wurde eine Fehlermeldung angezeigt, dass der Ngpsql-Datenprovider nicht gefunden wurde. Die im Menü erscheinende Option hängt also einfach von der MS Office-Version ab und nicht davon, ob der Ngpsql-Anbieter installiert ist. Ich ging zu dieser oben genannten Seite, lud das Setup_Npgsql-2.2.5.0-r3-net40.exeInstallationsprogramm herunter, rannte, startete Excel neu und alles funktionierte.

1
Mike Honey

Ich habe keine speziellen Erfahrungen mit PostgreSQL, aber im Allgemeinen mit Datenbanktreibern ist es wichtig zu wissen, ob das Programm, von dem aus Sie starten, eine 32-Bit (aka x86) oder 64-Bit (aka x64) Architektur hat. Wie Sie bereits anhand der durcheinandergewürfelten Namen feststellen können, hat Microsoft einen Gesamthash dieser IMO erstellt.

Wechseln Sie für Excel 2013 zu Datei / Konto / Info zu Excel und schauen Sie sich das Ende der ersten Textzeile an. Excel (wie alle anderen Programme) funktioniert nur mit Treibern derselben Architektur.

Die Power Query-Dokumentationsseite, auf die Sie verweisen, weist darauf hin, aber es ist ein wenig irreführend, wenn sie sagen "Wählen Sie den Treiber aus, der zu Ihrer Power Query-Installation passt" - eigentlich bestimmt Ihre Excel-Installation die Architektur. Die Architektur für Power Query hängt auch vollständig von der Architektur für Excel ab.

Ich habe die Ngpsql 2.2.5 R3-Datei über den Link auf der Power Query-Seite heruntergeladen. Dies ist nicht wirklich klar, aber vom Installationsassistenten ausgehend, ist dies 32-Bit. Es wird die Installation in einem Ordner empfohlen C:\Program Files (x86)\The Npgsql Development Team\Npgsql

Wenn dies die einzige Quelle ist, schlage ich vor, dass Sie eine 32-Bit-Excel-Installation benötigen, damit das funktioniert.

Meine Versionsnummer ist "15.0.4737.1000", 64-Bit. Ich habe versucht, das Installationsprogramm (R3) erneut von der Release-Seite auszuführen, und es funktionierte nicht. Ich konnte keine Erwähnung der Architektur auf der Seite finden, aber Sie haben Recht, sie wird unter `Program Files (x86)` installiert, also ist es wahrscheinlich 32-Bit. Ich denke, ich versuche einfach, Labkey Server zu installieren. JaredL vor 8 Jahren 0
Ich habe versucht, Office 64-Bit auf einigen verschiedenen Computern zu verwenden, um die Vorteile einer verbesserten Leistung zu nutzen. In jedem Fall musste ich schließlich aufgrund ähnlicher Treiber- oder Add-In-Probleme aufgeben, Office deinstallieren und erneut als 32-Bit-Version installieren. Es ist ein bisschen traurig, aber ich versuche nicht einmal mehr für 64-Bit ... Mike Honey vor 8 Jahren 0