Подключение к базе данных PostgreSQL из Excel 2013 Power Query с помощью Npgsql

Я хочу получить данные из базы данных PostgreSQL в моей локальной сети с помощью Power Query. По умолчанию в моей версии Excel перечислены три параметра в меню "Получить внешние данные / из базы данных" на ленте Power Query - "Из базы данных SQL Server","Из базы данных Access" и "Из базы данных служб аналитики SQL Server". PostgreSQL не является вариантом по умолчанию.

К счастью (или так я думал) на официальной странице поддержки Microsoft Office есть статья о том, как установить / включить поставщик данных Ngpsql для PostgreSQL для этой цели. Я следовал этим инструкциям, но все еще вижу только эти три варианта. Я не смог найти другие инструкции о том, как сделать это через Google. Вот что я сделал точно:

  1. Скачать Npgsql-2.2.5-net35.zip отсюда, это, кажется, самый новый выпуск Npgsql для.Net 3.5. Распаковывается во временную папку.
  2. копия gacutil.exe а также gacutil.exe.config с другого компьютера с Visual Studio в другую временную папку на этом компьютере (находится в c:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\x64\).
  3. Бежать gacutil.exe /i "<tempfolder>\Npgsql.dll" и то же самое с Mono.Security.dll, Получил сообщение Assembly successfully added to cache на обоих.
  4. редактировать 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"/> в узле <DbProviderFactories>, Это дословно со страницы справки, за исключением номера версии
    • Проверено бегом gacutil.exe -l | findstr Npgsql что номер версии и открытый ключ совпадают с тем, что я установил.
  5. Это конец инструкций на странице справки. Перезапустите Excel, без изменений в параметрах базы данных в меню. Перезагрузите компьютер, то же самое.
  6. Решите попробовать снова с версией.Net 4.0. Загрузите новую версию Npgsql со страницы релизов, разархивируйте во временную папку.
  7. Версия 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 в нем для его работы).
  8. Повторите № 3 с новой DLL и версией gacutil, Такое же сообщение об успехе.
  9. Повторите № 4 с machine.config файл, на этот раз в v4.0.30319 каталог.
    • Также закомментировал узел, который я добавил в другой файл.
  10. Перезагрузка, до сих пор нет опции в меню.

На данный момент у меня нет идей. У меня это работает на нескольких других компьютерах, потому что я установил Labkey Server, который использует базу данных PostgreSQL и, по-видимому, устанавливает правильные библиотеки DLL рядом с ней. В меню это отображается просто как "Из базы данных PostgreSQL". Конечно, я мог бы просто установить Labkey Server на этот компьютер, но это кажется уродливым решением, которого я бы хотел избежать.

2 ответа

Решение

Наконец-то все заработало. Похоже, по какой-то причине вам нужна версия Microsoft Office Professional Plus для подключения PostgreSQL. С этой версией, только что установленной на новом компьютере, у меня была опция PostgreSQL под Power Query -> From Database доступно по умолчанию. После того, как я выбрал эту опцию, дал имя хоста и базы данных, затем имя пользователя и пароль, я получил ошибку, сообщающую, что провайдер данных Ngpsql не может быть найден. Таким образом, опция, появляющаяся в меню, связана с версией MS Office, а не с тем, установлен ли поставщик Ngpsql. Я пошел на эту страницу, упомянутую выше, скачал Setup_Npgsql-2.2.5.0-r3-net40.exe установщик, запустил, перезапустил Excel и все заработало.

У меня нет особого опыта работы с PostgreSQL, но в целом с драйверами баз данных очень важно начать с понимания того, имеет ли программа, с которой вы запускаете, 32-битную (иначе говоря, x86) или 64-битную (она же x64) архитектуру. Как вы можете видеть по запутанным названиям, Microsoft сделала полный хэш этой IMO.

Для Excel 2013 перейдите в Файл / Учетная запись / О Excel, а затем посмотрите в конец первой строки текста. Excel (как и все другие программы) будет работать только с драйверами той же архитектуры.

Страница документации Power Query, на которую вы ссылались, намекает на это, но она немного вводит в заблуждение, когда говорят "Выберите драйвер, соответствующий вашей установке Power Query" - на самом деле это ваша установка Excel, которая задает архитектуру. Архитектура Power Query также полностью зависит от архитектуры Excel.

Я скачал файл Ngpsql 2.2.5 R3 по ссылке на странице Power Query - это не совсем понятно, но, судя по мастеру установки, это 32-битная версия - она ​​предлагает установить в папку C:\Program Files (x86)\The Npgsql Development Team\Npgsql

Если это единственный источник, тогда я предлагаю вам 32-битную установку Excel, чтобы это работало.

Другие вопросы по тегам