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

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

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:

  1. Herunterladen Npgsql-2.2.5-net35.zipvonHier, dies scheint die neuste 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 (zu finden unter c:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\x64\).
  3. Ausführen gacutil.exe /i "<tempfolder>\Npgsql.dll"und dasselbe mit Mono.Security.dll. Habe Assembly successfully added to cachebei beiden eine Nachricht erhalten.
  4. 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.
  5. 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.
  6. 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.
  7. Die Version von , die gacutil.exeich 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 -hSwitch überprüft, ob sie für 4.0 ist, und habe erhalten . Auf diese Maschine kopiert (musste das Unterverzeichnis mit einigen anderen DLLs darin Microsoft (R) .NET Global Assembly Cache Utility. Version 4.0.30319.18020einschließen, damit es funktioniert).1033
  8. Wiederholen Sie Schritt 3 mit neuen DLLs und der neuen Version gacutil. Dieselbe Erfolgsmeldung.
  9. Wiederholen Sie Nr. 4 mit machine.configder Datei, diesmal im v4.0.30319Verzeichnis.
    • Habe außerdem den Knoten auskommentiert, den ich in der anderen Datei hinzugefügt hatte.
  10. 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 Databasestandardmäß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.exeInstallationsprogramm 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.

verwandte Informationen