Я хочу получить данные из базы данных PostgreSQL в моей локальной сети с помощью Power Query. По умолчанию в моей версии Excel перечислены три параметра в меню «Получить внешние данные / из базы данных» на ленте Power Query - "Из базы данных SQL Server", "Из базы данных Access" и "Из базы данных служб аналитики SQL Server". PostgreSQL не является вариантом по умолчанию.
К счастью (или так мне казалось) есть эта статья на официальной странице поддержки Microsoft Office о том , как установить / включить поставщик данных Ngpsql для PostgreSQL для этой цели. Я следовал этим инструкциям, но все еще вижу только эти три варианта. Я не смог найти другие инструкции о том, как сделать это через Google. Вот что я сделал точно:
- Загрузите
Npgsql-2.2.5-net35.zip
отсюда, это, кажется, самый новый выпуск Npgsql для .Net 3.5. Распаковывается во временную папку. - Скопируйте
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
(версия 2.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"/>
в узле<DbProviderFactories>
. Это дословно со страницы справки, за исключением номера версии - Проверено запуском
gacutil.exe -l | findstr Npgsql
что номер версии и открытый ключ совпадают с тем, что я установил.
- Добавить строку
- Это конец инструкций на странице справки. Перезапустите Excel, без изменений в параметрах базы данных в меню. Перезагрузите компьютер, то же самое.
- Решите попробовать снова с версией .Net 4.0. Загрузите новую версию Npgsql со страницы релизов, разархивируйте во временную папку.
- Версия
gacutil.exe
я скопировал, была для .Net 3.5. Нашел альтернативный в другом каталоге (c:\Program Files (x86)\Microsoft SDKs\Windows\v8.0A\bin\NETFX 4.0 Tools\x64\
), проверил, что это для 4.0, запустив с ключом-h
и получилMicrosoft (R) .NET Global Assembly Cache Utility. Version 4.0.30319.18020
. Скопировал на эту машину (чтобы он работал, нужно было включить подкаталог1033
с некоторыми другими dll-файлами в нем). - Повторите # 3 с новой DLL и версией
gacutil
. Такое же сообщение об успехе. - Повторите # 4 с файлом
machine.config
, на этот раз вv4.0.30319
.- Также закомментировал узел, который я добавил в другой файл.
- Перезагрузка, до сих пор нет опции в меню.
На данный момент у меня нет идей. У меня это работает на нескольких других компьютерах, потому что я установил Labkey Server, который использует базу данных PostgreSQL и, по-видимому, устанавливает правильные библиотеки DLL рядом с ней. В меню это отображается просто как "Из базы данных PostgreSQL". Конечно, я мог бы просто установить Labkey Server на этот компьютер, но это кажется уродливым решением, которого я бы хотел избежать.