Finally got this working. It looks like for some reason you need the Professional Plus edition of Microsoft Office to enable PostgreSQL connections. With this version freshly installed on a new computer I had the PostgreSQL option under Power Query -> From Database
available by default. Once I selected this option, gave the host and database name, then username and password, I got an error telling me I the Ngpsql data provider could not be found. So, the option appearing in the menu is simply due to MS Office version and not whether the Ngpsql provider is installed. I went to this page mentioned above, downloaded the Setup_Npgsql-2.2.5.0-r3-net40.exe
installer, ran, restarted Excel and everything worked.
Подключение к базе данных PostgreSQL из Excel 2013 Power Query с помощью Npgsql
Я хочу получить данные из базы данных 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
файл 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
что номер версии и открытый ключ совпадают с тем, что я установил.
- Добавить строку
- Это конец инструкций на странице справки. Перезапустите 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 на этот компьютер, но это кажется уродливым решением, которого я бы хотел избежать.
2 ответа на вопрос
I've no specific experience with PostgreSQL, but in general with database drivers it's critical to start from an understanding of whether the program you are starting from has a 32-bit (aka x86) or 64-bit (aka x64) architecture. As you can start to see from the muddled names for these, Microsoft have made a total hash of this IMO.
For Excel 2013, go to File / Account / About Excel, then look at the end of the first line of text. Excel (like all other programs) will only work with drivers of the same architecture.
The Power Query documentation page you linked to hints at this, but it is a bit misleading when they say "Select the driver that matches your Power Query installation" - really it's your Excel installation that sets the architecture. The architecture for Power Query is also totally dependent on the architecture for Excel.
I downloaded the Ngpsql 2.2.5 R3 file from the link on the Power Query page - it's not really clear but judging from the install wizard this is 32-bit - it suggests installing into folder C:\Program Files (x86)\The Npgsql Development Team\Npgsql
If that is the only source, then I suggest you need a 32-bit Excel install to get this working.
Похожие вопросы
-
3
Мой файл заблокирован в Excel 2007, что происходит?
-
2
Есть ли способ заставить Excel 2007 автоматически восстанавливать фоновые файлы, как в MS Word?
-
1
Excel Word Wrap + исчезающий текст
-
-
1
Простое объединение / очистка с помощью Excel
-
7
Как вы поддерживаете Microsoft Excel на полной скорости, даже если у него нет фокуса окна?
-
2
Почему вы не можете копировать / вставлять изображения в Excel, но скриншоты работают?
-
3
Как синхронизировать Excel с таблицей Google Docs
-
9
Как разделить имя, чтобы получить имя и фамилию?
-
3
OpenX: mySql VS PostgreSQL
-
1
Ссылки в Excel изменены после сбоя