暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

MySQL如何访问Postgres

alitrack 2021-04-02
551

前言

PostgreSQL 可以通过mysql_fdw访问MySQL(或者MariaDB),

那MySQL如何访问PostgreSQL呢?

答案是CONNECT Store Engine

MariaDB 从 10.0.2版本开始支持CONNECT Store Engine。

CONNECT存储引擎使MariaDB可以访问外部(本地或远程)数据(MED)。这是通过根据不同的数据类型(尤其是各种格式的文件),通过ODBC或JDBC从其他DBMS或产品(例如Excel或MongoDB)提取的数据或从环境中检索到的数据(例如DIR,WMI)定义表来完成的 和MAC表)。

该存储引擎支持表分区,MariaDB虚拟列,并允许定义特殊列,例如ROWID,FILEID和SERVID。


本文就介绍下Ubuntu MariaDB如何通过CONNECT插件来访问Postgres。

环境

  • MariaDB 10.4

    • host: 127.0.0.1

    • port: 3306

    • username: root

    • password: pass

  • PostgreSQL 12.2

    • host: 192.168.1.6

    • port: 5433

    • username: postgres

    • database: postgres

    • password:

  • Ubuntu 18.04 LTS

安装CONNECT插件

    $ apt-get install mariadb-plugin-connect
      mysql> INSTALL SONAME 'ha_connect';

      安装ODBC-PostgreSQL

        • MariaDB服务器上安装ODBC-PostgreSQL

        $ apt-get install unixodbc odbc-postgresql
          • 配置ODBC.ini

          cat >>/etc/odbc.ini <<EOF
          [pg12]
          Description = PostgreSQL
          Driver = PostgreSQL Unicode
          Trace = No
          TraceFile = tmp/psqlodbc.log
          Database = postgres
          Servername = 192.168.1.6
          UserName = postgres
          Password =
          Port = 5433
          ReadOnly = Yes
          RowVersioning = No
          ShowSystemTables = No
          ShowOidColumn = No
          FakeOidIndex = No
          ConnSettings =
          EOF
            • 测试odbc

            isql -v pg12


            测试CONNECT

              create database postgres
              use postgres;
              CREATE TABLE iris (
              sepal_length double(12,2) NULL,
              sepal_width double(12,2) NULL,
              petal_length double(12,2) NULL,
              petal_width double(12,2) NULL,
              species varchar(20) NULL
              )ENGINE=CONNECT TABLE_TYPE=ODBC tabname='mysql.iris'
              CONNECTION='DSN=pg12'
              ;
              select * from iris limit 10;


                mysql> show create table postgres.iris;
                >>返回
                CREATE TABLE `iris` (
                `sepal_length` float DEFAULT NULL,
                `sepal_width` float DEFAULT NULL,
                `petal_length` float DEFAULT NULL,
                `petal_width` float DEFAULT NULL,
                `species` varchar(20) DEFAULT NULL
                ) ENGINE=CONNECT DEFAULT CHARSET=latin1
                CONNECTION='DSN=pg12'
                `TABLE_TYPE`=ODBC `tabname`='mysql.iris'


                成功。



                参考

                • https://mariadb.com/kb/en/connect/

                • https://mariadb.com/kb/en/connect-odbc-table-type-accessing-tables-from-another-dbms

                • https://odbc.postgresql.org/

                文章转载自alitrack,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

                评论