質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.48%

  • PostgreSQL

    1100questions

    PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

エクセルからPostgreSQLのデータへの接続ができません。

解決済

回答 2

投稿

  • 評価
  • クリップ 0
  • VIEW 1,996

ochiaishiro

score 18

エクセルから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. 番号リストpgAdminⅢ 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".

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 2

checkベストアンサー

+1

「PostgreSQL OLE DB Provider」ではなく ODBCドライバとして、「psqlODBC」を使うのは、、だめでしょうか?
PostgreSQL 公式のダウンロードページ psqlODBC for Windows からダウンロードできます。

設定手順は、psqlODBC (PostgreSQLむけODBCドライバ) が、わかりやすいでしょうか。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/09/27 12:04

    C:\Program Files\PostgreSQL\psqlODBCはインストール済みです。
    エクセルのデータ接続ウィザードでプロバイダーの一覧に表示されているのは「PostgreSQL OLE DB Provider」で「psqlODBC」がでてきませんの選択のしようがないのです。
    一覧に出てくる「PostgreSQL OLE DB Provider」が「psqlODBC」のことだと思っていますが、違いますでしょうか?ちなみに、psqlODBCをインストールしていなかった別のマシンでエクセルのデータ接続ウィザードを開いたところ、「PostgreSQL OLE DB Provider」がプロバイダーの一覧になかったので、「psqlODBC」をインストールしたところ、プロバイダーの一覧に「PostgreSQL OLE DB Provider」が表示され、選択できました。ここでも接続を試しましたが、結果は同じでした。

    キャンセル

  • 2017/09/27 12:26

    https://www.sraoss.co.jp/technology/postgresql/3rdparty/psqlODBC.php のデータソース作成の画面は、出てきていて、設定はできているということですよね。

    キャンセル

  • 2017/09/27 12:32 編集

    うちの環境の「ODBC データソース」では、http://fnya.cocolog-nifty.com/blog/2015/04/postgresql-odbc.html の一番下の画像とおなじで、PostgreSQL Unicode とかに なっているんですよね。 もしかして、見ている画面が違ったりしますか?

    キャンセル

  • 2017/09/27 14:22 編集

    皆様、ありがとうございます。

    CHERRYさんの書き込みをみて、データ接続ウィザードの最初の選択が違っているのかと思いました。
    今までは、接続するデータソースの種類として、「その他/詳細」を選択していましたが、「ODBC DSN」を選択しました。
    すると、「ODBCデータソースアドミニストレーター」が起動し、ユーザーデータソースの一覧にPostgreSQL関係のドライバーがリストアップされていなかったので、「追加」ボタンをクリックしました。
    「データソースの新規作成」画面が現れ、ドライバー一覧の中に以下の2つのPostgreSQL関係のドライバーがありました。
    PostgreSQL ODBC Driver(ANSI)
    PostgreSQL ODBC Driver(UNICODE)

    ここで、PostgreSQL ODBC Driver(UNICODE)を選択し、完了ボタンを押しました。
    すると、PostgreSQL Unicode ODBC セットアップ画面が現れ、ここにサーバー名にIPアドレス、データベース名に接続先のデータベース名、ポート番号、ユーザー名、パスワードを入力し、「テスト」ボタンをクリックしたところ、接続成功のメッセージが出ました。

    セットアップ画面の「保存」ボタンをクリックし、設定情報を保存。

    結果、エクセルファイルから接続できました。

    つまり、saziさんがおっしゃっていた「OLEとODBCは別物です」ということに尽きたようです。
    皆様、ありがとうございました。

    キャンセル

+1

OLEとODBCは別物です。
ODBCドライバーをインストールしただけで、OLEDBまでセットアップはされないはずですけど。

スタックビルダーでも、postgresのバージョンを選ぶとPgOleDBは表示されず、<リモートサーバ>を選択する必要があります。

エラーメッセージどおりに従うなら、もう一度インストールしてみてはどうでしょうか。

上記で改善されない場合、どのテーブルを選択しても同じでしょうか?
試しに単純なテーブルを作成しての接続テストをお勧めします。

当方でも接続確認してみましたが、問題なく取り込めました。
但し、配列型項目があるテーブルやユーザーとは異なるスキーマのテーブルはエラーとなりました。
※同じエラーではなく、「クエリが実行できないか、またはデータベーステーブルを開けませんでした」という内容でしたが。

因みに、OLEDBの場合はレスポンスに難があるようです。

ODBCドライバーにより接続し、ADOでシート作成した方が、性能やデータ型にも対応できるし柔軟だと思います。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

関連した質問

同じタグがついた質問を見る

  • PostgreSQL

    1100questions

    PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。