我想使用Power Query从本地网络上的PostgreSQL数据库中提取数据。默认情况下,我的Excel版本在Power Query功能区的“获取外部数据/从数据库”菜单下列出三个选项-“从SQL Server数据库”,“从Access数据库”和“从SQL Server Analysis Services数据库”。PostgreSQL不是默认选项。
幸运的是(或者,我认为)在Microsoft Office官方支持页面上有这篇文章,介绍了如何为此目的为PostgreSQL安装/启用Ngpsql数据提供程序。我遵循了这些说明,但是我仍然只看到这三个选项。我还无法找到有关如何通过Google执行此操作的其他说明。这就是我所做的:
Npgsql-2.2.5-net35.zip
从这里下载,这似乎是.net 3.5的Npgsql的最新版本。解压缩到一个临时文件夹。gacutil.exe
并gacutil.exe.config
从另一台计算机使用Visual Studio在此计算机上另一个临时文件夹(中找到的c:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\x64\
)。gacutil.exe /i "<tempfolder>\Npgsql.dll"
与相同Mono.Security.dll
。都收到消息Assembly successfully added to cache
。C:\Windows\Microsoft.NET\Framework64\v2.0.50727\CONFIG\machine.config
XML文件(v2.0.50727适用于.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"/>
在node中添加行<DbProviderFactories>
。这是帮助页面上的逐字记录,版本号除外gacutil.exe -l | findstr Npgsql
版本号和公钥与我安装的版本匹配。gacutil.exe
我复制的版本适用于.Net 3.5。在另一个目录(c:\Program Files (x86)\Microsoft SDKs\Windows\v8.0A\bin\NETFX 4.0 Tools\x64\
)中找到备用目录,并通过运行该-h
开关验证它是否适用于4.0并得到了Microsoft (R) .NET Global Assembly Cache Utility. Version 4.0.30319.18020
。复制到这台机器上(必须在其中包含1033
带有其他一些dll的子目录才能正常工作)。gacutil
。相同的成功消息。machine.config
文件,这一次在v4.0.30319
目录中。
在这一点上,我没有主意。我已经在其他两台计算机上工作了,因为我已经安装了Labkey Server,该服务器使用PostgreSQL数据库,并且显然在数据库旁边安装了正确的DLL。它在菜单中显示为“来自PostgreSQL数据库”。当然,我可以只在这台计算机上安装Labkey Server,但这似乎是我要避免的丑陋解决方案。
终于成功了。出于某种原因,您似乎需要Microsoft Office Professional Plus版本才能启用PostgreSQL连接。在新计算机上全新安装了该版本后Power Query -> From Database
,默认情况下我可以使用PostgreSQL选项。一旦选择了此选项,并指定了主机名和数据库名,然后输入了用户名和密码,我便收到一条错误消息,告诉我找不到Ngpsql数据提供程序。因此,菜单中显示的选项仅是由于MS Office版本而不是是否安装了Ngpsql提供程序。我转到上述页面,下载了Setup_Npgsql-2.2.5.0-r3-net40.exe
安装程序,运行,重新启动Excel,一切正常。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句