Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in / Register
Toggle navigation
D
dlink
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
zhaowei
dlink
Commits
62516d56
Commit
62516d56
authored
Jan 29, 2022
by
wenmo
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
新增 元数据生成 FlinkSQL 和 SQL
parent
27fe9b3b
Changes
11
Hide whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
195 additions
and
12 deletions
+195
-12
README.md
README.md
+1
-0
DataBaseController.java
...rc/main/java/com/dlink/controller/DataBaseController.java
+4
-4
SqlGeneration.java
dlink-admin/src/main/java/com/dlink/model/SqlGeneration.java
+46
-0
DataBaseService.java
...dmin/src/main/java/com/dlink/service/DataBaseService.java
+7
-0
DataBaseServiceImpl.java
...main/java/com/dlink/service/impl/DataBaseServiceImpl.java
+35
-4
Table.java
dlink-common/src/main/java/com/dlink/model/Table.java
+15
-2
index.tsx
...components/Studio/StudioLeftTool/StudioMetaData/index.tsx
+14
-2
index.tsx
dlink-web/src/pages/DataBase/Generation/index.tsx
+68
-0
Welcome.tsx
dlink-web/src/pages/Welcome.tsx
+3
-0
quickstart.md
docs/en-US/guide/quickstart.md
+1
-0
quickstart.md
docs/guide/quickstart.md
+1
-0
No files found.
README.md
View file @
62516d56
...
@@ -71,6 +71,7 @@ Dinky(原 Dlink):
...
@@ -71,6 +71,7 @@ Dinky(原 Dlink):
| | | 新增 条形图图的渲染 | 0.5.0 |
| | | 新增 条形图图的渲染 | 0.5.0 |
| | | 新增 饼图的渲染 | 0.5.0 |
| | | 新增 饼图的渲染 | 0.5.0 |
| | 元数据 | 新增 查询外部数据源的元数据信息 | 0.4.0 |
| | 元数据 | 新增 查询外部数据源的元数据信息 | 0.4.0 |
| | | 新增 FlinkSQL 和 SQL 的自动生成 | 0.6.0 |
| | 归档 | 新增 执行与提交历史 | 0.4.0 |
| | 归档 | 新增 执行与提交历史 | 0.4.0 |
| 运维中心 | 暂无 | 暂无 | 0.4.0 |
| 运维中心 | 暂无 | 暂无 | 0.4.0 |
| 注册中心 | Flink 集群实例 | 新增 外部 Flink 集群实例注册 | 0.4.0 |
| 注册中心 | Flink 集群实例 | 新增 外部 Flink 集群实例注册 | 0.4.0 |
...
...
dlink-admin/src/main/java/com/dlink/controller/DataBaseController.java
View file @
62516d56
...
@@ -147,10 +147,10 @@ public class DataBaseController {
...
@@ -147,10 +147,10 @@ public class DataBaseController {
}
}
/**
/**
* 获取
FlinkTableSql
* 获取
SqlGeneration
*/
*/
@GetMapping
(
"/get
FlinkTableSql
"
)
@GetMapping
(
"/get
SqlGeneration
"
)
public
Result
get
FlinkTableSql
(
@RequestParam
Integer
id
,
@RequestParam
String
schemaName
,
@RequestParam
String
tableName
)
{
public
Result
get
SqlGeneration
(
@RequestParam
Integer
id
,
@RequestParam
String
schemaName
,
@RequestParam
String
tableName
)
{
return
Result
.
succeed
(
databaseService
.
get
FlinkTableSql
(
id
,
schemaName
,
tableName
),
"获取成功"
);
return
Result
.
succeed
(
databaseService
.
get
SqlGeneration
(
id
,
schemaName
,
tableName
),
"获取成功"
);
}
}
}
}
\ No newline at end of file
dlink-admin/src/main/java/com/dlink/model/SqlGeneration.java
0 → 100644
View file @
62516d56
package
com
.
dlink
.
model
;
/**
* SqlGeneration
*
* @author wenmo
* @since 2022/1/29 16:13
*/
public
class
SqlGeneration
{
private
String
flinkSqlCreate
;
private
String
sqlSelect
;
private
String
sqlCreate
;
public
SqlGeneration
()
{
}
public
SqlGeneration
(
String
flinkSqlCreate
,
String
sqlSelect
,
String
sqlCreate
)
{
this
.
flinkSqlCreate
=
flinkSqlCreate
;
this
.
sqlSelect
=
sqlSelect
;
this
.
sqlCreate
=
sqlCreate
;
}
public
String
getFlinkSqlCreate
()
{
return
flinkSqlCreate
;
}
public
void
setFlinkSqlCreate
(
String
flinkSqlCreate
)
{
this
.
flinkSqlCreate
=
flinkSqlCreate
;
}
public
String
getSqlSelect
()
{
return
sqlSelect
;
}
public
void
setSqlSelect
(
String
sqlSelect
)
{
this
.
sqlSelect
=
sqlSelect
;
}
public
String
getSqlCreate
()
{
return
sqlCreate
;
}
public
void
setSqlCreate
(
String
sqlCreate
)
{
this
.
sqlCreate
=
sqlCreate
;
}
}
dlink-admin/src/main/java/com/dlink/service/DataBaseService.java
View file @
62516d56
...
@@ -4,6 +4,7 @@ import com.dlink.db.service.ISuperService;
...
@@ -4,6 +4,7 @@ import com.dlink.db.service.ISuperService;
import
com.dlink.model.Column
;
import
com.dlink.model.Column
;
import
com.dlink.model.DataBase
;
import
com.dlink.model.DataBase
;
import
com.dlink.model.Schema
;
import
com.dlink.model.Schema
;
import
com.dlink.model.SqlGeneration
;
import
java.util.List
;
import
java.util.List
;
...
@@ -28,4 +29,10 @@ public interface DataBaseService extends ISuperService<DataBase> {
...
@@ -28,4 +29,10 @@ public interface DataBaseService extends ISuperService<DataBase> {
List
<
Column
>
listColumns
(
Integer
id
,
String
schemaName
,
String
tableName
);
List
<
Column
>
listColumns
(
Integer
id
,
String
schemaName
,
String
tableName
);
String
getFlinkTableSql
(
Integer
id
,
String
schemaName
,
String
tableName
);
String
getFlinkTableSql
(
Integer
id
,
String
schemaName
,
String
tableName
);
String
getSqlSelect
(
Integer
id
,
String
schemaName
,
String
tableName
);
String
getSqlCreate
(
Integer
id
,
String
schemaName
,
String
tableName
);
SqlGeneration
getSqlGeneration
(
Integer
id
,
String
schemaName
,
String
tableName
);
}
}
dlink-admin/src/main/java/com/dlink/service/impl/DataBaseServiceImpl.java
View file @
62516d56
...
@@ -7,10 +7,7 @@ import com.dlink.db.service.impl.SuperServiceImpl;
...
@@ -7,10 +7,7 @@ import com.dlink.db.service.impl.SuperServiceImpl;
import
com.dlink.mapper.DataBaseMapper
;
import
com.dlink.mapper.DataBaseMapper
;
import
com.dlink.metadata.driver.Driver
;
import
com.dlink.metadata.driver.Driver
;
import
com.dlink.metadata.driver.DriverConfig
;
import
com.dlink.metadata.driver.DriverConfig
;
import
com.dlink.model.Column
;
import
com.dlink.model.*
;
import
com.dlink.model.DataBase
;
import
com.dlink.model.Schema
;
import
com.dlink.model.Table
;
import
com.dlink.service.DataBaseService
;
import
com.dlink.service.DataBaseService
;
import
org.springframework.stereotype.Service
;
import
org.springframework.stereotype.Service
;
...
@@ -101,4 +98,38 @@ public class DataBaseServiceImpl extends SuperServiceImpl<DataBaseMapper, DataBa
...
@@ -101,4 +98,38 @@ public class DataBaseServiceImpl extends SuperServiceImpl<DataBaseMapper, DataBa
Table
table
=
Table
.
build
(
tableName
,
schemaName
,
columns
);
Table
table
=
Table
.
build
(
tableName
,
schemaName
,
columns
);
return
table
.
getFlinkTableSql
(
dataBase
.
getName
(),
driver
.
getFlinkColumnTypeConversion
(),
dataBase
.
getFlinkConfig
());
return
table
.
getFlinkTableSql
(
dataBase
.
getName
(),
driver
.
getFlinkColumnTypeConversion
(),
dataBase
.
getFlinkConfig
());
}
}
@Override
public
String
getSqlSelect
(
Integer
id
,
String
schemaName
,
String
tableName
)
{
DataBase
dataBase
=
getById
(
id
);
Asserts
.
checkNotNull
(
dataBase
,
"该数据源不存在!"
);
Driver
driver
=
Driver
.
build
(
dataBase
.
getDriverConfig
()).
connect
();
List
<
Column
>
columns
=
driver
.
listColumns
(
schemaName
,
tableName
);
Table
table
=
Table
.
build
(
tableName
,
schemaName
,
columns
);
return
table
.
getSqlSelect
(
dataBase
.
getName
());
}
@Override
public
String
getSqlCreate
(
Integer
id
,
String
schemaName
,
String
tableName
)
{
DataBase
dataBase
=
getById
(
id
);
Asserts
.
checkNotNull
(
dataBase
,
"该数据源不存在!"
);
Driver
driver
=
Driver
.
build
(
dataBase
.
getDriverConfig
()).
connect
();
List
<
Column
>
columns
=
driver
.
listColumns
(
schemaName
,
tableName
);
Table
table
=
Table
.
build
(
tableName
,
schemaName
,
columns
);
return
driver
.
getCreateTableSql
(
table
);
}
@Override
public
SqlGeneration
getSqlGeneration
(
Integer
id
,
String
schemaName
,
String
tableName
)
{
DataBase
dataBase
=
getById
(
id
);
Asserts
.
checkNotNull
(
dataBase
,
"该数据源不存在!"
);
Driver
driver
=
Driver
.
build
(
dataBase
.
getDriverConfig
()).
connect
();
List
<
Column
>
columns
=
driver
.
listColumns
(
schemaName
,
tableName
);
Table
table
=
Table
.
build
(
tableName
,
schemaName
,
columns
);
SqlGeneration
sqlGeneration
=
new
SqlGeneration
();
sqlGeneration
.
setFlinkSqlCreate
(
table
.
getFlinkTableSql
(
dataBase
.
getName
(),
driver
.
getFlinkColumnTypeConversion
(),
dataBase
.
getFlinkConfig
()));
sqlGeneration
.
setSqlSelect
(
table
.
getSqlSelect
(
dataBase
.
getName
()));
sqlGeneration
.
setSqlCreate
(
driver
.
getCreateTableSql
(
table
));
return
sqlGeneration
;
}
}
}
dlink-common/src/main/java/com/dlink/model/Table.java
View file @
62516d56
...
@@ -71,7 +71,7 @@ public class Table implements Serializable, Comparable<Table> {
...
@@ -71,7 +71,7 @@ public class Table implements Serializable, Comparable<Table> {
return
tableWithSql
;
return
tableWithSql
;
}
}
public
String
getFlinkTableSql
(
String
catalogName
,
Map
<
String
,
String
>
typeConversion
,
String
flinkConfig
)
{
public
String
getFlinkTableSql
(
String
catalogName
,
Map
<
String
,
String
>
typeConversion
,
String
flinkConfig
)
{
StringBuilder
sb
=
new
StringBuilder
(
"CREATE TABLE "
);
StringBuilder
sb
=
new
StringBuilder
(
"CREATE TABLE "
);
sb
.
append
(
catalogName
+
"."
+
schema
+
"."
+
name
+
" (\n"
);
sb
.
append
(
catalogName
+
"."
+
schema
+
"."
+
name
+
" (\n"
);
List
<
String
>
pks
=
new
ArrayList
<>();
List
<
String
>
pks
=
new
ArrayList
<>();
...
@@ -101,7 +101,20 @@ public class Table implements Serializable, Comparable<Table> {
...
@@ -101,7 +101,20 @@ public class Table implements Serializable, Comparable<Table> {
}
}
sb
.
append
(
") WITH (\n"
);
sb
.
append
(
") WITH (\n"
);
sb
.
append
(
getFlinkTableWith
(
flinkConfig
));
sb
.
append
(
getFlinkTableWith
(
flinkConfig
));
sb
.
append
(
");\n"
);
sb
.
append
(
"\n);\n"
);
return
sb
.
toString
();
}
public
String
getSqlSelect
(
String
catalogName
)
{
StringBuilder
sb
=
new
StringBuilder
(
"SELECT\n"
);
for
(
int
i
=
0
;
i
<
columns
.
size
();
i
++)
{
sb
.
append
(
" "
);
if
(
i
>
0
)
{
sb
.
append
(
","
);
}
sb
.
append
(
columns
.
get
(
i
).
getName
()
+
"\n"
);
}
sb
.
append
(
" FROM "
+
catalogName
+
"."
+
schema
+
"."
+
name
+
";\n"
);
return
sb
.
toString
();
return
sb
.
toString
();
}
}
}
}
dlink-web/src/components/Studio/StudioLeftTool/StudioMetaData/index.tsx
View file @
62516d56
...
@@ -10,7 +10,7 @@ import {
...
@@ -10,7 +10,7 @@ import {
TableOutlined
,
TableOutlined
,
DatabaseOutlined
,
DatabaseOutlined
,
DownOutlined
,
DownOutlined
,
OrderedListOutlined
,
Fire
Outlined
OrderedListOutlined
,
Codepen
Outlined
}
from
'@ant-design/icons'
;
}
from
'@ant-design/icons'
;
import
React
from
"react"
;
import
React
from
"react"
;
import
{
showMetaDataTable
}
from
"@/components/Studio/StudioEvent/DDL"
;
import
{
showMetaDataTable
}
from
"@/components/Studio/StudioEvent/DDL"
;
...
@@ -21,6 +21,7 @@ import {
...
@@ -21,6 +21,7 @@ import {
import
Columns
from
"@/pages/DataBase/Columns"
;
import
Columns
from
"@/pages/DataBase/Columns"
;
import
Tables
from
"@/pages/DataBase/Tables"
;
import
Tables
from
"@/pages/DataBase/Tables"
;
import
{
TreeDataNode
}
from
"@/components/Studio/StudioTree/Function"
;
import
{
TreeDataNode
}
from
"@/components/Studio/StudioTree/Function"
;
import
Generation
from
"@/pages/DataBase/Generation"
;
const
{
DirectoryTree
}
=
Tree
;
const
{
DirectoryTree
}
=
Tree
;
const
{
Option
}
=
Select
;
const
{
Option
}
=
Select
;
...
@@ -137,7 +138,7 @@ const StudioMetaData = (props: any) => {
...
@@ -137,7 +138,7 @@ const StudioMetaData = (props: any) => {
<
TabPane
<
TabPane
tab=
{
tab=
{
<
span
>
<
span
>
<
OrderedList
Outlined
/>
<
Codepen
Outlined
/>
字段信息
字段信息
</
span
>
</
span
>
}
}
...
@@ -145,6 +146,17 @@ const StudioMetaData = (props: any) => {
...
@@ -145,6 +146,17 @@ const StudioMetaData = (props: any) => {
>
>
{
row
?
<
Columns
dbId=
{
databaseId
}
schema=
{
row
.
schema
}
table=
{
row
.
table
}
/>
:
<
Empty
image=
{
Empty
.
PRESENTED_IMAGE_SIMPLE
}
/>
}
{
row
?
<
Columns
dbId=
{
databaseId
}
schema=
{
row
.
schema
}
table=
{
row
.
table
}
/>
:
<
Empty
image=
{
Empty
.
PRESENTED_IMAGE_SIMPLE
}
/>
}
</
TabPane
>
</
TabPane
>
<
TabPane
tab=
{
<
span
>
<
OrderedListOutlined
/>
SQL 生成
</
span
>
}
key=
"sqlGeneration"
>
{
row
?
<
Generation
dbId=
{
databaseId
}
schema=
{
row
.
schema
}
table=
{
row
.
table
}
/>
:
<
Empty
image=
{
Empty
.
PRESENTED_IMAGE_SIMPLE
}
/>
}
</
TabPane
>
</
Tabs
>
</
Tabs
>
</
ModalForm
>
</
ModalForm
>
</>
</>
...
...
dlink-web/src/pages/DataBase/Generation/index.tsx
0 → 100644
View file @
62516d56
import
{
Typography
,
Tabs
}
from
'antd'
;
import
{
useEffect
,
useState
}
from
"react"
;
import
{
getData
}
from
"@/components/Common/crud"
;
const
{
Paragraph
}
=
Typography
;
const
{
TabPane
}
=
Tabs
;
type
SqlGeneration
=
{
flinkSqlCreate
?:
string
;
sqlSelect
?:
string
;
sqlCreate
?:
string
;
}
const
Generation
=
(
props
:
any
)
=>
{
const
{
dbId
,
table
,
schema
}
=
props
;
const
[
sqlGeneration
,
setSqlGeneration
]
=
useState
<
SqlGeneration
>
({});
const
getSqlGeneration
=
async
()
=>
{
const
msg
=
await
getData
(
'api/database/getSqlGeneration'
,
{
id
:
dbId
,
schemaName
:
schema
,
tableName
:
table
});
setSqlGeneration
(
msg
.
datas
);
};
useEffect
(()
=>
{
getSqlGeneration
();
},
[]);
return
(<>
<
Paragraph
>
<
Tabs
defaultActiveKey=
"FlinkDDL"
size=
"small"
tabPosition=
"left"
>
<
TabPane
tab=
{
<
span
>
FlinkDDL
</
span
>
}
key=
"FlinkDDL"
>
<
Paragraph
copyable=
{
{
text
:
sqlGeneration
.
flinkSqlCreate
}
}
></
Paragraph
>
<
pre
style=
{
{
height
:
'300px'
}
}
>
{
sqlGeneration
.
flinkSqlCreate
}
</
pre
>
</
TabPane
>
<
TabPane
tab=
{
<
span
>
SELECT
</
span
>
}
key=
"SQLSelect"
>
<
Paragraph
copyable=
{
{
text
:
sqlGeneration
.
sqlSelect
}
}
></
Paragraph
>
<
pre
style=
{
{
height
:
'300px'
}
}
>
{
sqlGeneration
.
sqlSelect
}
</
pre
>
</
TabPane
>
<
TabPane
tab=
{
<
span
>
SQLDDL
</
span
>
}
key=
"SQLDDL"
>
<
Paragraph
copyable=
{
{
text
:
sqlGeneration
.
sqlCreate
}
}
></
Paragraph
>
<
pre
style=
{
{
height
:
'300px'
}
}
>
{
sqlGeneration
.
sqlCreate
}
</
pre
>
</
TabPane
>
</
Tabs
>
</
Paragraph
></>)
};
export
default
Generation
;
dlink-web/src/pages/Welcome.tsx
View file @
62516d56
...
@@ -635,6 +635,9 @@ export default (): React.ReactNode => {
...
@@ -635,6 +635,9 @@ export default (): React.ReactNode => {
<
li
>
<
li
>
<
Link
>
扩展 Doris、SqlServer、Oracle 数据源注册、元数据、查询和执行
</
Link
>
<
Link
>
扩展 Doris、SqlServer、Oracle 数据源注册、元数据、查询和执行
</
Link
>
</
li
>
</
li
>
<
li
>
<
Link
>
新增 元数据生成 FlinkSQL 和 SQL
</
Link
>
</
li
>
</
ul
>
</
ul
>
</
Paragraph
>
</
Paragraph
>
</
Timeline
.
Item
>
</
Timeline
.
Item
>
...
...
docs/en-US/guide/quickstart.md
View file @
62516d56
...
@@ -109,6 +109,7 @@ Dinky 通过已注册的集群配置来获取对应的 YarnClient 实例。对
...
@@ -109,6 +109,7 @@ Dinky 通过已注册的集群配置来获取对应的 YarnClient 实例。对
| | | 新增 条形图图的渲染 | 0.5.0 |
| | | 新增 条形图图的渲染 | 0.5.0 |
| | | 新增 饼图的渲染 | 0.5.0 |
| | | 新增 饼图的渲染 | 0.5.0 |
| | 元数据 | 新增 查询外部数据源的元数据信息 | 0.4.0 |
| | 元数据 | 新增 查询外部数据源的元数据信息 | 0.4.0 |
| | | 新增 FlinkSQL 和 SQL 的自动生成 | 0.6.0 |
| | 归档 | 新增 执行与提交历史 | 0.4.0 |
| | 归档 | 新增 执行与提交历史 | 0.4.0 |
| 运维中心 | 暂无 | 暂无 | 0.4.0 |
| 运维中心 | 暂无 | 暂无 | 0.4.0 |
| 注册中心 | Flink 集群实例 | 新增 外部 Flink 集群实例注册 | 0.4.0 |
| 注册中心 | Flink 集群实例 | 新增 外部 Flink 集群实例注册 | 0.4.0 |
...
...
docs/guide/quickstart.md
View file @
62516d56
...
@@ -109,6 +109,7 @@ Dinky 通过已注册的集群配置来获取对应的 YarnClient 实例。对
...
@@ -109,6 +109,7 @@ Dinky 通过已注册的集群配置来获取对应的 YarnClient 实例。对
| | | 新增 条形图图的渲染 | 0.5.0 |
| | | 新增 条形图图的渲染 | 0.5.0 |
| | | 新增 饼图的渲染 | 0.5.0 |
| | | 新增 饼图的渲染 | 0.5.0 |
| | 元数据 | 新增 查询外部数据源的元数据信息 | 0.4.0 |
| | 元数据 | 新增 查询外部数据源的元数据信息 | 0.4.0 |
| | | 新增 FlinkSQL 和 SQL 的自动生成 | 0.6.0 |
| | 归档 | 新增 执行与提交历史 | 0.4.0 |
| | 归档 | 新增 执行与提交历史 | 0.4.0 |
| 运维中心 | 暂无 | 暂无 | 0.4.0 |
| 运维中心 | 暂无 | 暂无 | 0.4.0 |
| 注册中心 | Flink 集群实例 | 新增 外部 Flink 集群实例注册 | 0.4.0 |
| 注册中心 | Flink 集群实例 | 新增 外部 Flink 集群实例注册 | 0.4.0 |
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment