質問: エクセルからPostgreSQLのデータへの接続ができません。教えてください。 エクセルからPostgreSQLのデータベースに接続しようとエクセルのデータ接続ウィザードを使って 1. データリンクプロパティのプロバイダータブで「PostgreSQL OLE DB Provider」を選び、 2. 接続タブでデータソースにIPアドレス、場所にデータベース名を 3. サーバーログオン情報としてユーザー名とパスワードを入力し、 4. 「接続のテスト」ボタンをクリックし「接続のテストに成功しました。」を確認してます。 5. その後に現れる「データベースとテーブルの選択」画面で接続するテーブルを指定し、 6. 「データ接続ファイルを保存して終了」画面の「Excel Services:」の「認証の設定」ボタンをクリックし、 7. 番号リスト「Windows認証」にチェックが付いているのを「なし」に変更し、OKボタンをクリックし、「データ接続ファイルを保存して終了」画面にもどります。 なお、当方はPostgreSQLのデータベースへの接続アカウントは、Windows認証とは別のアカウントを登録しています、 8. 「データ接続ファイルを保存して終了」画面で「完了」ボタンをクリック。 9. すると、「データのインポート」画面が現れ、OKボタンをクリックすると、エクセルが以下のエラーを出します。 > > ===Microsoft Office Excel=== > > データベースドライバの操作を完了できませんでした。 > > Microsoftのドライバの場合は、ファイルが破損していないかを確認してください。破損している場合は、Microsoft Queryを再セットアップしてドライバをインストールし直してください。その他のドライバの場合は、データベース管理者またはドライバのベンダに連絡してください。 > > ============================> > > > 「Excel Services:」の「認証の設定」を「Windows認証」のままにしても同じエラーが出ます。 また、pgAdminのデータビューではデータを参照できますので、データベース側のファイルは破損していないと思われます。 当方の環境: 1. PostgreSQL ver.9.5.9 2. ODBC:PostgreSQL OLE DB Provider (PostgreSQLをインストールする時に一緒にインストール) 3. 番号リストpgAdminIII version 1.22.2 関係あるかどうか分かりませんが、MSQRY32.EXEの更新日時はは2011/07/27です。 なお、C:\Program Files\PostgreSQL\9.5\shareフォルダーにあるファイルpsqlrc.sampleに以下の記述があったので、 "pg_config.exe"がある"C:\Program Files\PostgreSQL\9.5\bin"フォルダーにpsqlrc.sampleをpsqlrc(拡張子なし)にリネームして保存しましたが、結果は変わりません。 > > -- Copy this to your installation's sysconf directory and rename it psqlrc. > > -- The sysconf directory can be identified via "pg_config --sysconfdir". > > >
回答: OLEとODBCは別物です。 ODBCドライバーをインストールしただけで、OLEDBまでセットアップはされないはずですけど。 スタックビルダーでも、postgresのバージョンを選ぶとPgOleDBは表示されず、<リモートサーバ>を選択する必要があります。 エラーメッセージどおりに従うなら、もう一度インストールしてみてはどうでしょうか。 上記で改善されない場合、どのテーブルを選択しても同じでしょうか? 試しに単純なテーブルを作成しての接続テストをお勧めします。 当方でも接続確認してみましたが、問題なく取り込めました。 但し、配列型項目があるテーブルやユーザーとは異なるスキーマのテーブルはエラーとなりました。 ※同じエラーではなく、「クエリが実行できないか、またはデータベーステーブルを開けませんでした」という内容でしたが。 因みに、OLEDBの場合はレスポンスに難があるようです。 ODBCドライバーにより接続し、ADOでシート作成した方が、性能やデータ型にも対応できるし柔軟だと思います。