Npgsql을 사용하여 Excel 2013 파워 쿼리에서 PostgreSQL 데이터베이스에 연결

Npgsql을 사용하여 Excel 2013 파워 쿼리에서 PostgreSQL 데이터베이스에 연결

파워 쿼리를 사용하여 로컬 네트워크의 PostgreSQL 데이터베이스에서 데이터를 가져오고 싶습니다. 기본적으로 내 Excel 버전에는 파워 쿼리 리본의 "외부 데이터 가져오기/데이터베이스에서" 메뉴 아래에 "SQL Server 데이터베이스에서", "Access 데이터베이스에서" 및 "SQL Server Analysis Services 데이터베이스에서"라는 세 가지 옵션이 나열되어 있습니다. PostgreSQL은 기본 옵션이 아닙니다.

다행스럽게도 (내 생각에는) 거기에 있다이것설치/활성화 방법에 대한 공식 Microsoft Office 지원 페이지의 기사PostgreSQL용 Ngpsql 데이터 공급자이 목적을 위해. 이 지침을 따랐지만 여전히 해당 세 가지 옵션만 표시됩니다. Google을 통해 이 작업을 수행하는 방법에 대한 다른 지침을 찾을 수 없습니다. 내가 정확히 한 일은 다음과 같습니다.

  1. Npgsql-2.2.5-net35.zip에서 다운로드여기, 이것은 .Net 3.5용 Npgsql의 최신 릴리스인 것 같습니다. 임시폴더에 ​​압축을 풀었습니다.
  2. Visual Studio가 설치된 다른 컴퓨터에서 이 컴퓨터의 다른 임시 폴더(에 있음)로 복사 gacutil.exe합니다 .gacutil.exe.configc:\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. XML 파일을 편집합니다 C:\Windows\Microsoft.NET\Framework64\v2.0.50727\CONFIG\machine.config(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버전 번호와 공개 키가 내가 설치한 것과 일치하는지 실행하여 확인했습니다 .
  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. 새 dll 및 버전을 사용하여 3번을 반복합니다 gacutil. 동일한 성공 메시지.
  9. machine.config이번에는 디렉터리에서 파일 에 대해 #4를 반복합니다 v4.0.30319.
    • 또한 다른 파일에 추가한 노드를 주석 처리했습니다.
  10. 다시 시작해도 메뉴에 여전히 옵션이 없습니다.

이 시점에서 나는 아이디어가 없습니다. 내가 설치했기 때문에 다른 두 대의 컴퓨터에서 이 작업을 수행하고 있습니다.랩키 서버, PostgreSQL 데이터베이스를 사용하고 그와 함께 올바른 DLL을 설치하는 것 같습니다. 메뉴에는 간단히 "PostgreSQL 데이터베이스에서"로 표시됩니다. 물론 이 컴퓨터에 Labkey Server를 설치할 수도 있지만 이는 피하고 싶은 추악한 솔루션인 것 같습니다.

답변1

마침내 이것이 작동하게 되었습니다. 어떤 이유로 PostgreSQL 연결을 활성화하려면 Microsoft Office Professional Plus 버전이 필요한 것 같습니다. 이 버전을 새 컴퓨터에 새로 설치하면 Power Query -> From Database기본적으로 PostgreSQL 옵션을 사용할 수 있습니다. 이 옵션을 선택하고 호스트와 데이터베이스 이름, 사용자 이름과 비밀번호를 입력하면 Ngpsql 데이터 공급자를 찾을 수 없다는 오류가 발생했습니다. 따라서 메뉴에 나타나는 옵션은 단순히 MS Office 버전 때문이지 Ngpsql 공급자 설치 여부가 아닙니다. 나는 갔었다이것위에서 언급한 페이지에서 Setup_Npgsql-2.2.5.0-r3-net40.exe설치 프로그램을 다운로드하고 Excel을 실행하고 다시 시작하면 모든 것이 작동했습니다.

답변2

PostgreSQL에 대한 구체적인 경험은 없지만 일반적으로 데이터베이스 드라이버의 경우 시작하는 프로그램이 32비트(즉 x86) 아키텍처인지 64비트(즉 x64) 아키텍처인지 이해하는 것부터 시작하는 것이 중요합니다. 이들에 대한 혼란스러운 이름에서 알 수 있듯이 Microsoft는 이 IMO의 전체 해시를 만들었습니다.

Excel 2013의 경우 파일 / 계정 / Excel 정보로 이동한 다음 텍스트 첫 줄의 끝을 확인하세요. Excel(다른 모든 프로그램과 마찬가지로)은 동일한 아키텍처의 드라이버에서만 작동합니다.

이에 대한 힌트로 연결한 파워 쿼리 설명서 페이지는 "파워 쿼리 설치와 일치하는 드라이버 선택"이라고 말하면 약간 오해의 소지가 있습니다. 실제로 아키텍처를 설정하는 것은 Excel 설치입니다. 파워 쿼리의 아키텍처도 Excel의 아키텍처에 전적으로 의존합니다.

파워 쿼리 페이지의 링크에서 Ngpsql 2.2.5 R3 파일을 다운로드했습니다. 실제로는 명확하지 않지만 설치 마법사에서 판단하면 32비트입니다. 폴더에 설치하는 것이 좋습니다.C:\Program Files (x86)\The Npgsql Development Team\Npgsql

이것이 유일한 소스라면 이 작업을 수행하려면 32비트 Excel을 설치해야 하는 것이 좋습니다.

관련 정보