• ベストアンサー

PostgreSQLからODBCでSQLServe

SQLServerにテーブルがあります。 それをPostgreSQLからODBCで参照したいです。 ◆SQLServer(設定済) OS : Windows10 Pro DBMS : SQLServer 2022 Exp コンピュータ名 : SV01\DB01 DBユーザ名 : suser1 DBパスワード : suser1psw DB名 : SQLSVDB1 テーブル名 : sqlsvtb1 データソース名 : DS01 ◆postgreSQL(設定中) OS : AlmaLinux release 9.4 DBMS : psql (PostgreSQL) 13.16 コンピュータ名 : comp01 DBユーザ名 : puser1 DBパスワード : puser1psw DB名 : psqldb1 ■やる事 AlmaLinuxにODBC Driver for SQL Serverをインストール AlmaLinuxのODBCを設定 AlmaLinuxにODBC_FDWをインストール PostgreSQL上でCREATE EXTENSION odbc_fdw; ■わからない事 ODBC Driver for SQL Serverのデータソースの記述の仕方がわからない 下記の設定をどこにどんな風に書けばいいのか? コンピュータ名 : SV01\DB01 DBユーザ名 : suser1 DBパスワード : suser1psw DB名 : SQLSVDB1 データソース名 : DS01 ODBC_FDWのインストール方法

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

以下の手順でPostgreSQLからODBCを介してSQL Serverのテーブルを参照できるように設定することができます。 ### 1. ODBC Driver for SQL Serverのインストール AlmaLinuxにMicrosoft ODBC Driver for SQL Serverをインストールします。以下はインストール手順の一例です。 ```bash # Microsoftのリポジトリを追加 sudo su curl https://packages.microsoft.com/keys/microsoft.asc | sudo tee /etc/pki/rpm-gpg/RPM-GPG-KEY-Microsoft curl https://packages.microsoft.com/config/rhel/9/prod.repo | sudo tee /etc/yum.repos.d/mssql-release.repo exit # 必要なパッケージをインストール sudo dnf install -y msodbcsql17 unixODBC unixODBC-devel ``` ### 2. ODBCの設定 ODBCの設定ファイルを編集し、ODBCデータソースを定義します。 #### `/etc/odbcinst.ini` このファイルにドライバ情報を追加します。 ```ini [ODBC Drivers] ODBC Driver 17 for SQL Server=Installed [ODBC Driver 17 for SQL Server] Description=Microsoft ODBC Driver 17 for SQL Server Driver=/opt/microsoft/msodbcsql17/lib64/libmsodbcsql-17.8.so.1.1 ``` #### `/etc/odbc.ini` このファイルにデータソース情報を追加します。 ```ini [DS01] Description=SQL Server ODBC Data Source Driver=ODBC Driver 17 for SQL Server Server=SV01\DB01 Database=SQLSVDB1 User=suser1 Password=suser1psw ``` ### 3. ODBC_FDWのインストール PostgreSQLでODBC Foreign Data Wrapperを使うために、`odbc_fdw`をインストールします。 ```bash # パッケージリポジトリを追加 sudo dnf install https://download.postgresql.org/pub/repos/yum/reporpms/EL-9-x86_64/pgdg-redhat-repo-latest.noarch.rpm # PostgreSQLデベロップメントツールをインストール sudo dnf install postgresql13-devel # odbc_fdwをソースからビルドするために必要なパッケージをインストール sudo dnf groupinstall "Development Tools" sudo dnf install git # ソースコードをクローンしてビルド git clone https://github.com/CartoDB/odbc_fdw cd odbc_fdw make sudo make install ``` ### 4. PostgreSQL上でODBC_FDWを有効にする PostgreSQLのデータベースにログインし、拡張機能を有効にします。 ```sql -- データベースにログイン psql -U puser1 -d psqldb1 -- 拡張機能を作成 CREATE EXTENSION odbc_fdw; ``` ### 5. 外部テーブルの作成 SQL Serverのテーブルを参照するための外部テーブルをPostgreSQLで設定します。 ```sql -- 外部サーバーの作成 CREATE SERVER mssql_server FOREIGN DATA WRAPPER odbc_fdw OPTIONS (dsn 'DS01'); -- ユーザーマッピングを作成 CREATE USER MAPPING FOR puser1 SERVER mssql_server OPTIONS (username 'suser1', password 'suser1psw'); -- 外部テーブルの作成 CREATE FOREIGN TABLE sqlsvtb1 ( column1 datatype, column2 datatype, ... ) SERVER mssql_server OPTIONS (table 'sqlsvtb1'); ``` ### これでPostgreSQLからSQL Serverのテーブルが参照できるようになるはずです。 ------------------------------------------------ こちらの回答はAIエージェント「あい」による参考回答です。 有識者からの回答も是非お待ちしています。 OKWAVEのAIに対する取り組みについてはこちらをご確認ください。 https://staffblog.okwave.jp/2023/06/07/10415/

関連するQ&A