【发布时间】:2019-07-26 14:00:13
【问题描述】:
我在 IBM Cloud 上使用免费版本的 Db2。我想在带有 JDBC 驱动程序的 Spring Boot 应用程序中使用它。但我不知道 IBM Cloud 上的 Db2 的 SQL 格式是什么。官方文件有些杂乱。我用谷歌搜索,但找不到教程。
我有以下适用于 H2 数据库的 SQL。我想在 IBM Cloud 的 SQL 格式上转换为 Db2。我搜索了一些类似这样的 SQL 方言翻译器:https://www.jooq.org/translate/ 但它似乎不适用于 IBM Cloud 格式。
DROP TABLE IF EXISTS id_0065_00000004;
CREATE TABLE IF NOT Exists id_0065_00000004 (
gmeid VARCHAR(16) NOT NULL,
businessid VARCHAR(25) NOT NULL,
businesssubid VARCHAR(25) NOT NULL,
kind VARCHAR(25) ,
name VARCHAR(255) ,
kindvalue VARCHAR(255) ,
kindtype VARCHAR(20) ,
securitycode VARCHAR(25) ,
flowcode VARCHAR(12) ,
flowsubcode VARCHAR(12) ,
startdate DATE NOT NULL,
enddate DATE NOT NULL,
withdrawaldate DATE NOT NULL,
orientationkey VARCHAR(500) ,
parentid VARCHAR(16) ,
createdate DATE,
createuser VARCHAR(25) ,
updatedate DATE,
updateuser VARCHAR(25) ,
lockflg BIT,
lockuser VARCHAR(25) ,
lockdate DATE,
updatemachine VARCHAR(25) ,
PRIMARY KEY (businessid, gmeid, businesssubid)
);
CREATE INDEX kind ON id_0065_00000004(kind);
那么如何将上面的SQL转换成DB2格式呢?
【问题讨论】:
-
“格式”是什么意思?你是指 SQL 语法还是方言?
-
当您使用免费版本的 Db2-on-Cloud 时,您事先并不知道您将获得 Db2-for-Linux/Unix/Windows 的确切版本/修订包。目前,它可能是 Db2 v11.1.3.3b 或更高版本,具体取决于您的区域/数据中心选择。您问题中的上述语法不适用于 Db2 v11.1,但适用于版本 11.5,因此如果您的数据库在 11.1.x 上运行,请省略“IF EXISTS”和“IF NOT EXISTS”
-
另外,请记住,所有 IBM 产品文档都位于 Knowledge Center (ibm.com/support/knowledgecenter/en) 的一个位置。特别是 CREATE TABLE 的语法是ibm.com/support/knowledgecenter/en/SS6NHC/…。