
Ich möchte mit Power Query Daten aus einer PostgreSQL-Datenbank in meinem lokalen Netzwerk abrufen. Standardmäßig listet meine Excel-Version im Menü „Externe Daten abrufen/Aus Datenbank“ auf der Power Query-Multifunktionsleiste drei Optionen auf: „Aus SQL Server-Datenbank“, „Aus Access-Datenbank“ und „Aus SQL Server Analysis Services-Datenbank“. PostgreSQL ist keine Standardoption.
Glücklicherweise (dachte ich zumindest) gibt esDasArtikel auf der offiziellen Microsoft Office-Support-Seite zur Installation/Aktivierung derNgpsql-Datenanbieter für PostgreSQLfür diesen Zweck. Ich habe diese Anweisungen befolgt, aber mir werden immer noch nur diese drei Optionen angezeigt. Ich konnte bei Google keine weiteren Anweisungen dazu finden. So habe ich es genau gemacht:
- Herunterladen
Npgsql-2.2.5-net35.zip
vonHier, dies scheint die neuste Version von Npgsql für .Net 3.5 zu sein. In einen temporären Ordner entpackt. - Kopieren Sie
gacutil.exe
undgacutil.exe.config
von einem anderen Computer mit Visual Studio in einen anderen temporären Ordner auf diesem Computer (zu finden unterc:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\x64\
). - Ausführen
gacutil.exe /i "<tempfolder>\Npgsql.dll"
und dasselbe mitMono.Security.dll
. HabeAssembly successfully added to cache
bei beiden eine Nachricht erhalten. - XML-Datei bearbeiten
C:\Windows\Microsoft.NET\Framework64\v2.0.50727\CONFIG\machine.config
(v2.0.50727 ist für .Net 3.5).<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"/>
Zeile im Knoten hinzufügen<DbProviderFactories>
. Dies ist bis auf die Versionsnummer wörtlich von der Hilfeseite übernommen.- Durch Ausführen überprüft
gacutil.exe -l | findstr Npgsql
, dass die Versionsnummer und der öffentliche Schlüssel mit denen übereinstimmen, die ich installiert habe.
- Dies ist das Ende der Anweisungen auf der Hilfeseite. Starten Sie Excel neu. Keine Änderung der Datenbankoptionen im Menü. Starten Sie den Computer neu. Dasselbe.
- Versuchen Sie es erneut mit der .Net 4.0-Version. Laden Sie die neue Version von Npgsql von der Release-Seite herunter und entpacken Sie sie in einen temporären Ordner.
- Die Version von , die
gacutil.exe
ich kopiert habe, war für .Net 3.5. Habe die alternative Version in einem anderen Verzeichnis (c:\Program Files (x86)\Microsoft SDKs\Windows\v8.0A\bin\NETFX 4.0 Tools\x64\
) gefunden, durch Ausführen mit dem-h
Switch überprüft, ob sie für 4.0 ist, und habe erhalten . Auf diese Maschine kopiert (musste das Unterverzeichnis mit einigen anderen DLLs darinMicrosoft (R) .NET Global Assembly Cache Utility. Version 4.0.30319.18020
einschließen, damit es funktioniert).1033
- Wiederholen Sie Schritt 3 mit neuen DLLs und der neuen Version
gacutil
. Dieselbe Erfolgsmeldung. - Wiederholen Sie Nr. 4 mit
machine.config
der Datei, diesmal imv4.0.30319
Verzeichnis.- Habe außerdem den Knoten auskommentiert, den ich in der anderen Datei hinzugefügt hatte.
- Neustart, immer noch keine Option im Menü.
An diesem Punkt habe ich keine Ideen mehr. Ich habe dies auf einigen anderen Computern zum Laufen gebracht, weil ich installiert hatteLabkey Server, das eine PostgreSQL-Datenbank verwendet und anscheinend die richtigen DLLs dazu installiert. Es wird im Menü einfach als „Aus PostgreSQL-Datenbank“ angezeigt. Natürlich könnte ich einfach Labkey Server auf diesem Computer installieren, aber das scheint mir eine hässliche Lösung zu sein, die ich vermeiden möchte.
Antwort1
Endlich funktioniert es. Es sieht so aus, als ob Sie aus irgendeinem Grund die Professional Plus-Edition von Microsoft Office benötigen, um PostgreSQL-Verbindungen zu aktivieren. Mit dieser Version, die ich gerade auf einem neuen Computer installiert habe, war die PostgreSQL-Option Power Query -> From Database
standardmäßig verfügbar. Nachdem ich diese Option ausgewählt und den Host- und Datenbanknamen sowie den Benutzernamen und das Passwort eingegeben hatte, erhielt ich eine Fehlermeldung, dass der Ngpsql-Datenanbieter nicht gefunden werden konnte. Die im Menü angezeigte Option hängt also einfach von der MS Office-Version ab und nicht davon, ob der Ngpsql-Anbieter installiert ist. Ich ging zuDasSeite wie oben erwähnt, das Setup_Npgsql-2.2.5.0-r3-net40.exe
Installationsprogramm heruntergeladen, ausgeführt, Excel neu gestartet und alles hat funktioniert.
Antwort2
Ich habe keine spezielle Erfahrung mit PostgreSQL, aber im Allgemeinen ist es bei Datenbanktreibern wichtig, zu wissen, ob das Programm, mit dem Sie beginnen, eine 32-Bit- (auch bekannt als x86) oder 64-Bit- (auch bekannt als x64) Architektur hat. Wie Sie an den verwirrenden Namen erkennen können, hat Microsoft meiner Meinung nach hier einen totalen Mist gebaut.
Gehen Sie bei Excel 2013 zu Datei / Konto / Über Excel und sehen Sie sich dann das Ende der ersten Textzeile an. Excel (wie alle anderen Programme) funktioniert nur mit Treibern derselben Architektur.
Die Power Query-Dokumentationsseite, auf die Sie verlinkt haben, weist darauf hin, aber die Aussage „Wählen Sie den Treiber aus, der zu Ihrer Power Query-Installation passt“ ist etwas irreführend – tatsächlich legt Ihre Excel-Installation die Architektur fest. Die Architektur für Power Query ist auch vollständig von der Architektur für Excel abhängig.
Ich habe die Ngpsql 2.2.5 R3-Datei über den Link auf der Power Query-Seite heruntergeladen - es ist nicht wirklich klar, aber dem Installationsassistenten zufolge handelt es sich um eine 32-Bit-Version - er schlägt die Installation in einem Ordner vorC:\Program Files (x86)\The Npgsql Development Team\Npgsql
Wenn dies die einzige Quelle ist, benötigen Sie meiner Meinung nach eine 32-Bit-Excel-Installation, damit dies funktioniert.