既然是从 INFORMIX 剥离出来的工具,应该连结资料库的能力是强大的。本段落我们检视一下Genero连结资料库的能力。
市面上常用的资料库,都有自己努力的强项,个别的指令也稍微有些不同。为了最大化能共通於这些资料库,以做到『Write Once, Use Everywhere』,Genero FGL具有自开发的『共通性资料库介面 ODI, Open Database Interface』,以 INFORMIX 指令为基准 (因为来自於 INFOMIX ),将其他资料库具有的些微差异,利用 ODI 进行转译,概略流程如下:
透过 ODI 的转换,资料库内包含数据型态、SQL语法、指令等,能在最大限度下求同,但仍旧保持了使用 PREPARE 方法,使得特殊指令仍在 Genero内能被使用,满足『优化』的需求,此为存异。
FGL套件的设定档案是 FGLPROFILE,在这里可以指定许多必要的设定,今天专门针对『资料库的连线』进行说明。
FGLPORIFLE采用 entry 的方式设定 (非INI模式),行首 # 字号时代表为注解
Genero可对接 IBM DB2 / INFORMIX / MS SQL Server / ORACLE / MySQL / PostgreSQL / SAP Hana / SQLite / Sybase ASE (以上按照名称排序),但是支持版本各有不同,以下挑选部分资料库作为简介对象
资料库厂牌 | Genero 2.40 | Genero 2.50 | Genero 3.20 |
---|---|---|---|
ORACLE | 8.x / 9.x / 10.x / 11.x | 9.2 / 10.x / 11.x / 12x | 11.x 以上全版本 |
INFORMIX | 5.x / 7.x / 8.x / 9.x / 10.x / 11.x | 5.x / 7.x / 8.x / 9.x / 10.x / 11.x | 5.x以上全版本 |
MS SQL Server | 2005 / 2008 / 2012 | 2005 / 2008 / 2012 | 2012以上全版本,Azure SQDBL V12 |
PostgreSQL | 8.x.y / 9.x.y | 8.x.y / 9.x.y | 9.6 / 10 / 11 / 12 |
SQLite | 3.5.x / 3.6.x | 3.5.x / 3.6.x | 3.x |
连线到资料库时,最重要的就是连线字串的设定。包含连结的资料库主机位置 (port) 、登入资料库的帐号密码,以及对应需使用的字元组等环境变数。
^ 例如 ORACLE 资料库会将相关讯息以 ORACLE_SID 含括成为一组设定时,则须依照该资料库要求进行设定。
Genero支持静态的设定档,即透过 FGLPROFILE 进行连线字串的设定。FGLPROFILE的存放有两组路径:$FGLDIR/etc/fglprofile 与 $FGLPROFILE 指定档案,遇有同样的设定时,後者可压过前者;同档案内冲突时,下方设定压过上方设定
若需要连结的资料库众多,或是需要动态设定,则可以在程序内部使用 CONNECT 指令
语法
『CONNECT TO连线对象+ODI驱动程序名称 USER 连线帐号 USING 连线密码』
注:连线对象依照不同资料库有不同需求。部分资料库如SQLite无帐号密码则可省略
本文摘录需特别关注要点进行说明与介绍,需大量采用或作为生产环境时,仍应详读FGL的ODI文件,该文件内均会详列连线时,DB的特殊之处、须采用的特殊语法、如何将原有程序或查询语句进行转换为 ODI 通用语句。
需在 Genero 所在主机安装完成对应的 ORACLE Client 软件,并配置 tnsname.ora,确认ORACLE_SID / ORACLE_HOME 等必须存在的环境变数时,可进行 Genero 端设定
dbi.database.dbname.driver = "dbmora"
dbi.database.dbname.source = "stock"
dbi.database.dbname.username= "登入帐号"
dbi.database.dbname.password= "登入密码"
dbi.database.dbname.schema= "登入SCHEMA"
驱动程序配置完成後,需确认 INFORMIXSERVER 环境变数是否已完成配置
因为源自於 INFORMIX,所以在 FGLPROFILE 中指定驱动程序即可
需安装好client,且必须完成下列环境变数的设定
dbi.database.dbname.driver = "dbmpgs"
dbi.database.dbname.source = "test1" #或用dbname[@host[:port]]
dbi.database.dbname.username= "登入帐号"
dbi.database.dbname.password= "登入密码"
SQL Server在2.40与更早前的版本,有支持 open source的FREETDS与Easysoft 的连线,此两种连线需透过 OPEN ODBC的协助。设定上较为繁杂且软件为社群维护,可能会有维护窗口的顾虑。可考虑直接使用微软推出的 Linux 版本SQL Server驱动 SNC (SQLserver Native Client) 。
依据 Genero 官网要求,SQL Server连线前应先确定 Linux 上是否已完成对应驱动程序安装的最低版本要求如下
dbi.database.dbname.driver = "dbmsnc"
dbi.database.dbname.source = "test1"
dbi.database.dbname.username= "登入帐号"
dbi.database.dbname.password= "登入密码"
单机文件型资料库,只需确认套件已安装即可
dbi.database.dbname.driver = "dbmsqt"
dbi.database.dbname.source = "/opt/myapp/stock.dbs"
要验证连线时,可先利用 DATABASE 指令进行连线,依据上方的FGLPROFILE设定,以『dbname』为范例,测试连线如下
MAIN
DEFINE cnt INTEGER
DATABASE dbname
SELECT COUNT(1) INTO cnt FROM hello_table
IF cnt > 0 THEN
DISPLAY “CONNECT OK!”
END IF
END MAIN
即可确认 DB连线成功。
<<: [Day04] Tableau 轻松学 - Tableau 三大软件
今天要介绍视窗设定,会分成三个部份来讲,建立视窗、设定视窗大小跟视窗的其他基本设定,那我们不多说就直...
插入排序法(Insertion Sort),原理是逐一将原始资料加入已排序好资料中,并逐一与已排序好...
首先打开终端机输入此行 接下来系统会要求输入你电脑的密码 输入完之後按enter,之後就会自己跑,跑...
在昨天讲完了Message的密文产生细节流程後,回过头来我再来谈Sign安全签章,我认为这顺序比较容...
1. 使用浏览器 DSM 套件中心安装需要的开发相关套件,这边我安装 Docker 跟 Node.j...