Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
33 changes: 33 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,4 +13,37 @@ sql转换工具,sql翻译,sql格式化,支持oracle转mysql,后续支持
#### 2. 支持在表名前动态配置用户名
> 由于在项目中的表名一般不会使用[user].tableName, 但是在某些不跨库场景下,需要在A用户下,去访问B用户的表时。就需要根据表名来动态加上用户B。

#### 1.支持oracle create语法到Starrocks的主键表的语法

```sql
CREATE TABLE my_table (
ID NUMBER(10),
clob_column CLOB,
blob_column BLOB,
some_other_column VARCHAR2(100),
creation_date DATE DEFAULT SYSDATE,
last_modified DATE,
CONSTRAINT pk_my_table PRIMARY KEY (ID),
CONSTRAINT fk_department FOREIGN KEY (department_id) REFERENCES departments(department_id),
CONSTRAINT uk_my_table UNIQUE (some_other_column)
);
```
SR
```sql

CREATE TABLE my_table (
ID bigint,
clob_column VARBINARY,
blob_column VARBINARY,
some_other_column varchar(100),
creation_date datetime DEFAULT CURRENT_TIMESTAMP,
last_modified datetime
)
PRIMARY KEY (ID,some_other_column)
DISTRIBUTED BY HASH (ID,some_other_column);

```




Original file line number Diff line number Diff line change
Expand Up @@ -292,8 +292,10 @@ public boolean visit(OracleCreateTableStatement x) {
if(MySqlUtil.containsKeyWords(columnName)){
sqlColumnDefinition.setName("`"+columnName+"`");
}
// 类型转换在这边完成
sqlColumnDefinition.setDataType(OracleSQLDataTypeTransformUtil.transformOracleToMySql(SQLParserUtils.createExprParser(sqlColumnDefinition.getDataType().toString(), DbType.oracle).parseDataType()));
if(sqlColumnDefinition.getDefaultExpr() != null) {
// 获取建表语句中的default关键字
SQLExpr expr = sqlColumnDefinition.getDefaultExpr();
if(expr instanceof SQLMethodInvokeExpr) {
SQLMethodInvokeExpr sqlMethodInvokeExpr = (SQLMethodInvokeExpr) expr;
Expand Down Expand Up @@ -327,6 +329,7 @@ public boolean visit(OracleCreateTableStatement x) {
}
}
}
//转为目标数据库的类型
sqlColumnDefinition.setDbType(distDbType);
MapCacheUtil.getInstance().addCacheData(tableName.toUpperCase() + ":" + columnName.toUpperCase(), sqlColumnDefinition.toString().replaceAll(sqlColumnDefinition.getColumnName(), ""));
mySqlCreateTableStatement.getTableElementList().add(sqlColumnDefinition);
Expand Down
Loading