Sqlines简介
Sqlines是一款开源软件,支持多种数据库之间的SQL语句语法的的转换,openGauss将此工具修改适配,新增了openGauss数据库选项,目前可以支持PostgreSQL、MySQL、Oracle向openGauss的SQL语法转换。
如何获取和使用
1、在社区下载代码到任意位置:openGauss/openGauss-tools-sqlines (gitee.com)
2、进入代码根目录下, 执行脚本编译安装sqlines:
[user@openGauss33 sqlines]$ sh build.sh -i
3、sqlines将安装到根目录下的/bin文件夹下,可将其添加到环境变量方便使用:
[user@openGauss33 sqlines]$ export PATH=$PATH:`pwd`/bin
4、使用sqlines
[user@openGauss33 sqlines]$ sqlines -?
SQLines 3.1.330 - SQL Assessment and Conversion Tool.
Portions Copyright (c) 2020 SQLines.
Portions Copyright (c) 2021 Huawei Technologies Co.,Ltd.
All Rights Reserved.
How to use:
sqlines -option=value [...n]
Options:
-s - Source type
-t - Target type
-in - List of files (wildcards *.* are allowed)
-out - Output directory (the current directory by default)
-log - Log file (sqlines.log by default)
-? - Print how to use
Example:
Convert script.sql file from Oracle to openGauss
./sqlines -s=oracle -t=opengauss -in=script.sql
参数说明:
参数 | 值域 | 功能 |
---|---|---|
-? | - | 帮助菜单 |
-s | [ oracle | mysql | postgresql ] | Source数据库 |
-t | [ opengauss ] | Target数据库 |
-in | FILE_PATH | 输入文件 |
-out | [ FILE_PATH | /* empty */] | 输出文件,不指定时输出在in文件夹, |
-log | [ FILE_PATH | /* empty */] | 输出日志,不指定时输出在当前文件夹 |
5、执行脚本卸载sqlines:
[user@openGauss33 sqlines]$ sh build.sh -m
PostgreSQL to openGauss
删除IF
Create table IF NOT EXISTS tb as select * from basetb;
Create table IF NOT EXISTS tb as execute p1();
Create index IF NOT EXISTS idx on tb(a);
Create sequence IF NOT EXISTS sqc;
Create schema IF NOT EXISTS schm;
openGauss中很多语法暂时不支持 if not exists判断,因此在转换时会给删掉。
如: Create schema IF NOT EXISTS schm;
=> Create schema schm;
MySQL to openGauss
数据类型
MYSQL 数据类型 | openGauss 数据类型 | 备注 |
---|---|---|
TINYINT | SMALLINT | |
MEDIUMINT | INT | |
DOUBLE | DOUBLE PRECISION | |
FLOAT | DOUBLE PRECISION | |
DATETIME | TIMESTAMP | |
TINYBLOB | BYTEA | |
BLOB | BYTEA | |
MEDIUNBLOB | BYTEA | |
LONGBLOB | BYTEA | |
TINYTEXT | TEXT | |
MEDIUMTEXT | TEXT | |
LONGTEXT | TEXT | |
BINARY | BYTEA | |
VARBINARY | BYTEA |
Mysql中很多数据类型与openGauss有差别,对于表中的数据类型,可以进行转换成为openGauss的数据类型。
CREATE TABLE
删除if
CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name select_statement
对于create table as语句,openGauss不支持使用 if not exists 判断,因此会删除if判断。
列约束
语法:column_definition:
col_name type [NOT NULL | NULL] [DEFAULT default_value] [AUTO_INCREMENT] [UNIQUE [KEY] | [PRIMARY] KEY] [