Conéctese a la base de datos PostgreSQL desde Excel 2013 Power Query con Npgsql

Conéctese a la base de datos PostgreSQL desde Excel 2013 Power Query con Npgsql

Quiero extraer datos de una base de datos PostgreSQL en mi red local con Power Query. De forma predeterminada, mi versión de Excel enumera tres opciones en el menú "Obtener datos externos/Desde la base de datos" en la cinta de Power Query: "Desde la base de datos de SQL Server", "Desde la base de datos de Access" y "Desde la base de datos de SQL Server Analysis Services". PostgreSQL no es una opción predeterminada.

Por suerte (o eso pensé) existeesteartículo en la página de soporte oficial de Microsoft Office sobre cómo instalar/habilitar elProveedor de datos Ngpsql para PostgreSQLpara este propósito. Seguí estas instrucciones, pero todavía solo veo que aparecen esas tres opciones. No he podido encontrar otras instrucciones sobre cómo hacer esto a través de Google. Esto es lo que hice exactamente:

  1. Descargar Npgsql-2.2.5-net35.zipdesdeaquí, esta parece ser la versión más reciente de Npgsql para .Net 3.5. Descomprimido en una carpeta temporal.
  2. Copie gacutil.exey gacutil.exe.configdesde otra computadora con Visual Studio a otra carpeta temporal en esta computadora (que se encuentra en c:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\x64\).
  3. Ejecutar gacutil.exe /i "<tempfolder>\Npgsql.dll"y lo mismo con Mono.Security.dll. Recibí un mensaje Assembly successfully added to cacheen ambos.
  4. Edite C:\Windows\Microsoft.NET\Framework64\v2.0.50727\CONFIG\machine.configel archivo XML (v2.0.50727 es para .Net 3.5).
    • Agregar línea <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"/>en el nodo <DbProviderFactories>. Esto es palabra por palabra de la página de ayuda, excepto el número de versión.
    • Verificado ejecutando gacutil.exe -l | findstr Npgsqlque el número de versión y la clave pública coinciden con lo que instalé.
  5. Este es el final de las instrucciones en la página de ayuda. Reinicie Excel, no hay cambios en las opciones de la base de datos en el menú. Reinicie la computadora, lo mismo.
  6. Decide intentarlo nuevamente con la versión .Net 4.0. Descargue la nueva versión de Npgsql desde la página de lanzamientos, descomprímala en la carpeta temporal.
  7. La versión que gacutil.execopié era para .Net 3.5. Encontré el alternativo en un directorio diferente ( c:\Program Files (x86)\Microsoft SDKs\Windows\v8.0A\bin\NETFX 4.0 Tools\x64\), verifiqué que es para 4.0 ejecutando con el -hconmutador y obtuve Microsoft (R) .NET Global Assembly Cache Utility. Version 4.0.30319.18020. Copiado en esta máquina (tenía que incluir el 1033subdirectorio con algunos otros archivos dll para que funcionara).
  8. Repita el punto 3 con nuevos dll y versión de gacutil. Mismo mensaje de éxito.
  9. Repita el punto 4 con machine.configel archivo, esta vez en v4.0.30319el directorio.
    • También comenté el nodo que había agregado en el otro archivo.
  10. Reinicie, todavía no hay ninguna opción en el menú.

En este punto ya no tengo ideas. Tengo esto funcionando en un par de computadoras más porque había instaladoServidor Labkey, que utiliza una base de datos PostgreSQL y aparentemente instala las DLL correctas junto a ella. Aparece en el menú simplemente como "Desde la base de datos PostgreSQL". Por supuesto, podría instalar Lakey Server en esta computadora, pero parece una solución fea que me gustaría evitar.

Respuesta1

Finalmente esto funcionó. Parece que por alguna razón necesitas la edición Professional Plus de Microsoft Office para habilitar las conexiones PostgreSQL. Con esta versión recién instalada en una computadora nueva, tenía la opción PostgreSQL Power Query -> From Databasedisponible de forma predeterminada. Una vez que seleccioné esta opción, di el nombre del host y de la base de datos, luego el nombre de usuario y la contraseña, recibí un error que me decía que no se podía encontrar el proveedor de datos Ngpsql. Entonces, la opción que aparece en el menú se debe simplemente a la versión de MS Office y no a si el proveedor Ngpsql está instalado. fui aestepágina mencionada anteriormente, descargué el Setup_Npgsql-2.2.5.0-r3-net40.exeinstalador, ejecuté, reinicié Excel y todo funcionó.

Respuesta2

No tengo experiencia específica con PostgreSQL, pero en general con los controladores de bases de datos es fundamental comenzar por comprender si el programa que está iniciando tiene una arquitectura de 32 bits (también conocida como x86) o de 64 bits (también conocida como x64). Como puede comenzar a ver por los nombres confusos de estos, Microsoft ha hecho un picadillo total de esta OMI.

Para Excel 2013, vaya a Archivo/Cuenta/Acerca de Excel, luego mire el final de la primera línea de texto. Excel (como todos los demás programas) sólo funcionará con controladores de la misma arquitectura.

La página de documentación de Power Query que vinculó da pistas sobre esto, pero es un poco engañoso cuando dicen "Seleccione el controlador que coincida con su instalación de Power Query"; en realidad, es su instalación de Excel la que establece la arquitectura. La arquitectura de Power Query también depende totalmente de la arquitectura de Excel.

Descargué el archivo Ngpsql 2.2.5 R3 desde el enlace en la página de Power Query; no está muy claro, pero a juzgar por el asistente de instalación, es de 32 bits; sugiere instalarlo en una carpeta.C:\Program Files (x86)\The Npgsql Development Team\Npgsql

Si esa es la única fuente, le sugiero que necesite una instalación de Excel de 32 bits para que esto funcione.

información relacionada