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
b421f890
Commit
b421f890
authored
Jul 21, 2021
by
godkaikai
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
oracle和clickhouse
parent
2c0f34f5
Changes
21
Show whitespace changes
Inline
Side-by-side
Showing
21 changed files
with
677 additions
and
127 deletions
+677
-127
Asserts.java
dlink-common/src/main/java/com/dlink/assertion/Asserts.java
+19
-0
pom.xml
dlink-connectors/dlink-connector-jdbc/pom.xml
+0
-2
AbstractJdbcDriver.java
...in/java/com/dlink/metadata/driver/AbstractJdbcDriver.java
+130
-64
Driver.java
...-base/src/main/java/com/dlink/metadata/driver/Driver.java
+7
-3
IDBQuery.java
...base/src/main/java/com/dlink/metadata/query/IDBQuery.java
+2
-6
pom.xml
dlink-metadata/dlink-metadata-clickhouse/pom.xml
+30
-0
ClickHouseTypeConvert.java
...ava/com/dlink/metadata/convert/ClickHouseTypeConvert.java
+21
-0
ClickHouseDriver.java
...main/java/com/dlink/metadata/driver/ClickHouseDriver.java
+45
-0
ClickHouseQuery.java
...c/main/java/com/dlink/metadata/query/ClickHouseQuery.java
+80
-0
com.dlink.metadata.driver.Driver
...ources/META-INF/services/com.dlink.metadata.driver.Driver
+1
-0
pom.xml
dlink-metadata/dlink-metadata-mysql/pom.xml
+1
-0
MySqlDriver.java
.../src/main/java/com/dlink/metadata/driver/MySqlDriver.java
+2
-41
MySqlQuery.java
...ql/src/main/java/com/dlink/metadata/query/MySqlQuery.java
+6
-11
pom.xml
dlink-metadata/dlink-metadata-oracle/pom.xml
+30
-0
OracleTypeConvert.java
...in/java/com/dlink/metadata/convert/OracleTypeConvert.java
+58
-0
OracleDriver.java
...src/main/java/com/dlink/metadata/driver/OracleDriver.java
+81
-0
OracleQuery.java
...e/src/main/java/com/dlink/metadata/query/OracleQuery.java
+85
-0
com.dlink.metadata.driver.Driver
...ources/META-INF/services/com.dlink.metadata.driver.Driver
+1
-0
OracleTest.java
...a-oracle/src/test/java/com/dlink/metadata/OracleTest.java
+64
-0
pom.xml
dlink-metadata/pom.xml
+2
-0
pom.xml
pom.xml
+12
-0
No files found.
dlink-common/src/main/java/com/dlink/assertion/Asserts.java
View file @
b421f890
...
@@ -2,6 +2,8 @@ package com.dlink.assertion;
...
@@ -2,6 +2,8 @@ package com.dlink.assertion;
import
com.dlink.exception.RunTimeException
;
import
com.dlink.exception.RunTimeException
;
import
java.util.Collection
;
/**
/**
* Asserts
* Asserts
*
*
...
@@ -46,6 +48,18 @@ public class Asserts {
...
@@ -46,6 +48,18 @@ public class Asserts {
}
}
}
}
public
static
boolean
isNullCollection
(
Collection
collection
)
{
if
(
isNull
(
collection
)||
collection
.
size
()==
0
)
{
return
true
;
}
return
false
;
}
public
static
boolean
isNotNullCollection
(
Collection
collection
)
{
return
!
isNullCollection
(
collection
);
}
public
static
void
checkNull
(
String
key
,
String
msg
)
{
public
static
void
checkNull
(
String
key
,
String
msg
)
{
if
(
key
==
null
||
""
.
equals
(
key
))
{
if
(
key
==
null
||
""
.
equals
(
key
))
{
throw
new
RunTimeException
(
msg
);
throw
new
RunTimeException
(
msg
);
...
@@ -64,4 +78,9 @@ public class Asserts {
...
@@ -64,4 +78,9 @@ public class Asserts {
}
}
}
}
public
static
void
checkNullCollection
(
Collection
collection
,
String
msg
)
{
if
(
isNullCollection
(
collection
)){
throw
new
RunTimeException
(
msg
);
}
}
}
}
dlink-connectors/dlink-connector-jdbc/pom.xml
View file @
b421f890
...
@@ -121,7 +121,6 @@
...
@@ -121,7 +121,6 @@
<dependency>
<dependency>
<groupId>
mysql
</groupId>
<groupId>
mysql
</groupId>
<artifactId>
mysql-connector-java
</artifactId>
<artifactId>
mysql-connector-java
</artifactId>
<version>
8.0.20
</version>
<scope>
test
</scope>
<scope>
test
</scope>
</dependency>
</dependency>
...
@@ -138,7 +137,6 @@
...
@@ -138,7 +137,6 @@
<dependency>
<dependency>
<groupId>
com.oracle
</groupId>
<groupId>
com.oracle
</groupId>
<artifactId>
ojdbc6
</artifactId>
<artifactId>
ojdbc6
</artifactId>
<version>
11.2.0.3
</version>
<scope>
test
</scope>
<scope>
test
</scope>
</dependency>
</dependency>
</dependencies>
</dependencies>
...
...
dlink-metadata/dlink-metadata-base/src/main/java/com/dlink/metadata/driver/AbstractJdbcDriver.java
View file @
b421f890
...
@@ -30,7 +30,7 @@ public abstract class AbstractJdbcDriver extends AbstractDriver {
...
@@ -30,7 +30,7 @@ public abstract class AbstractJdbcDriver extends AbstractDriver {
@Override
@Override
public
boolean
test
()
{
public
boolean
test
()
{
Asserts
.
checkNotNull
(
config
,
"无效的数据源配置"
);
Asserts
.
checkNotNull
(
config
,
"无效的数据源配置"
);
try
{
try
{
Class
.
forName
(
getDriverClass
());
Class
.
forName
(
getDriverClass
());
DriverManager
.
getConnection
(
config
.
getUrl
(),
config
.
getUsername
(),
config
.
getPassword
()).
close
();
DriverManager
.
getConnection
(
config
.
getUrl
(),
config
.
getUsername
(),
config
.
getPassword
()).
close
();
...
@@ -57,7 +57,7 @@ public abstract class AbstractJdbcDriver extends AbstractDriver {
...
@@ -57,7 +57,7 @@ public abstract class AbstractJdbcDriver extends AbstractDriver {
@Override
@Override
public
void
close
()
{
public
void
close
()
{
try
{
try
{
if
(
Asserts
.
isNotNull
(
conn
))
{
if
(
Asserts
.
isNotNull
(
conn
))
{
conn
.
close
();
conn
.
close
();
}
}
}
catch
(
SQLException
e
)
{
}
catch
(
SQLException
e
)
{
...
@@ -65,13 +65,28 @@ public abstract class AbstractJdbcDriver extends AbstractDriver {
...
@@ -65,13 +65,28 @@ public abstract class AbstractJdbcDriver extends AbstractDriver {
}
}
}
}
public
void
close
(
PreparedStatement
preparedStatement
,
ResultSet
results
){
try
{
if
(
Asserts
.
isNotNull
(
results
))
{
results
.
close
();
}
if
(
Asserts
.
isNotNull
(
preparedStatement
))
{
preparedStatement
.
close
();
}
}
catch
(
SQLException
e
)
{
e
.
printStackTrace
();
}
}
@Override
@Override
public
List
<
Schema
>
listSchemas
(){
public
List
<
Schema
>
listSchemas
()
{
List
<
Schema
>
schemas
=
new
ArrayList
<>();
List
<
Schema
>
schemas
=
new
ArrayList
<>();
PreparedStatement
preparedStatement
=
null
;
ResultSet
results
=
null
;
String
schemasSql
=
getDBQuery
().
schemaAllSql
();
String
schemasSql
=
getDBQuery
().
schemaAllSql
();
try
{
try
{
try
(
PreparedStatement
preparedStatement
=
conn
.
prepareStatement
(
schemasSql
);
preparedStatement
=
conn
.
prepareStatement
(
schemasSql
);
ResultSet
results
=
preparedStatement
.
executeQuery
())
{
results
=
preparedStatement
.
executeQuery
();
while
(
results
.
next
())
{
while
(
results
.
next
())
{
String
schemaName
=
results
.
getString
(
getDBQuery
().
schemaName
());
String
schemaName
=
results
.
getString
(
getDBQuery
().
schemaName
());
if
(
Asserts
.
isNotNullString
(
schemaName
))
{
if
(
Asserts
.
isNotNullString
(
schemaName
))
{
...
@@ -79,9 +94,10 @@ public abstract class AbstractJdbcDriver extends AbstractDriver {
...
@@ -79,9 +94,10 @@ public abstract class AbstractJdbcDriver extends AbstractDriver {
schemas
.
add
(
schema
);
schemas
.
add
(
schema
);
}
}
}
}
}
}
catch
(
Exception
e
)
{
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
e
.
printStackTrace
();
}
finally
{
close
(
preparedStatement
,
results
);
}
}
return
schemas
;
return
schemas
;
}
}
...
@@ -89,12 +105,11 @@ public abstract class AbstractJdbcDriver extends AbstractDriver {
...
@@ -89,12 +105,11 @@ public abstract class AbstractJdbcDriver extends AbstractDriver {
@Override
@Override
public
List
<
Table
>
listTables
(
String
schemaName
)
{
public
List
<
Table
>
listTables
(
String
schemaName
)
{
List
<
Table
>
tableList
=
new
ArrayList
<>();
List
<
Table
>
tableList
=
new
ArrayList
<>();
PreparedStatement
preparedStatement
=
null
;
ResultSet
results
=
null
;
ResultSet
results
=
null
;
String
sql
=
getDBQuery
().
tablesSql
(
schemaName
);
try
{
try
{
String
tablesSql
=
getDBQuery
().
tablesSql
();
preparedStatement
=
conn
.
prepareStatement
(
sql
);
StringBuilder
sql
=
new
StringBuilder
(
tablesSql
);
try
(
PreparedStatement
preparedStatement
=
conn
.
prepareStatement
(
sql
.
toString
()))
{
preparedStatement
.
setString
(
1
,
schemaName
);
results
=
preparedStatement
.
executeQuery
();
results
=
preparedStatement
.
executeQuery
();
while
(
results
.
next
())
{
while
(
results
.
next
())
{
String
tableName
=
results
.
getString
(
getDBQuery
().
tableName
());
String
tableName
=
results
.
getString
(
getDBQuery
().
tableName
());
...
@@ -107,30 +122,24 @@ public abstract class AbstractJdbcDriver extends AbstractDriver {
...
@@ -107,30 +122,24 @@ public abstract class AbstractJdbcDriver extends AbstractDriver {
tableList
.
add
(
tableInfo
);
tableList
.
add
(
tableInfo
);
}
}
}
}
}
}
catch
(
SQLException
e
)
{
}
catch
(
SQLException
e
)
{
e
.
printStackTrace
();
e
.
printStackTrace
();
}
finally
{
}
finally
{
if
(
Asserts
.
isNotNull
(
results
)){
close
(
preparedStatement
,
results
);
try
{
results
.
close
();
}
catch
(
SQLException
e
)
{
e
.
printStackTrace
();
}
}
}
}
return
tableList
;
return
tableList
;
}
}
@Override
@Override
public
List
<
Column
>
listColumns
(
String
schema
,
String
tableName
)
{
public
List
<
Column
>
listColumns
(
String
schema
Name
,
String
tableName
)
{
List
<
Column
>
columns
=
new
ArrayList
<>();
List
<
Column
>
columns
=
new
ArrayList
<>();
try
{
PreparedStatement
preparedStatement
=
null
;
String
tableFieldsSql
=
getDBQuery
().
columnsSql
();
ResultSet
results
=
null
;
String
tableFieldsSql
=
getDBQuery
().
columnsSql
(
schemaName
,
tableName
);
tableFieldsSql
=
String
.
format
(
tableFieldsSql
,
tableName
);
tableFieldsSql
=
String
.
format
(
tableFieldsSql
,
tableName
);
try
(
try
{
PreparedStatement
preparedStatement
=
conn
.
prepareStatement
(
tableFieldsSql
);
preparedStatement
=
conn
.
prepareStatement
(
tableFieldsSql
);
ResultSet
results
=
preparedStatement
.
executeQuery
())
{
results
=
preparedStatement
.
executeQuery
();
while
(
results
.
next
())
{
while
(
results
.
next
())
{
Column
field
=
new
Column
();
Column
field
=
new
Column
();
String
columnName
=
results
.
getString
(
getDBQuery
().
columnName
());
String
columnName
=
results
.
getString
(
getDBQuery
().
columnName
());
...
@@ -149,20 +158,73 @@ public abstract class AbstractJdbcDriver extends AbstractDriver {
...
@@ -149,20 +158,73 @@ public abstract class AbstractJdbcDriver extends AbstractDriver {
field
.
setIsNotNull
(
results
.
getString
(
getDBQuery
().
isNotNull
()));
field
.
setIsNotNull
(
results
.
getString
(
getDBQuery
().
isNotNull
()));
columns
.
add
(
field
);
columns
.
add
(
field
);
}
}
}
}
catch
(
SQLException
e
)
{
}
catch
(
SQLException
e
)
{
e
.
printStackTrace
();
e
.
printStackTrace
();
}
finally
{
close
(
preparedStatement
,
results
);
}
}
return
columns
;
return
columns
;
}
}
@Override
@Override
public
boolean
execute
(
String
sql
){
public
boolean
createTable
(
Table
table
)
{
Asserts
.
checkNullString
(
sql
,
"Sql 语句为空"
);
String
sql
=
getCreateTableSql
(
table
).
replaceAll
(
"\r\n"
,
" "
);
if
(
Asserts
.
isNotNull
(
sql
))
{
return
execute
(
sql
);
}
else
{
return
false
;
}
}
@Override
public
boolean
dropTable
(
Table
table
)
{
String
sql
=
getDropTableSql
(
table
).
replaceAll
(
"\r\n"
,
" "
);
if
(
Asserts
.
isNotNull
(
sql
))
{
return
execute
(
sql
);
}
else
{
return
false
;
}
}
@Override
public
boolean
truncateTable
(
Table
table
)
{
String
sql
=
getTruncateTableSql
(
table
).
replaceAll
(
"\r\n"
,
" "
);
if
(
Asserts
.
isNotNull
(
sql
))
{
return
execute
(
sql
);
}
else
{
return
false
;
}
}
@Override
public
String
getDropTableSql
(
Table
table
)
{
StringBuilder
sb
=
new
StringBuilder
();
sb
.
append
(
"DROP TABLE "
);
if
(
Asserts
.
isNotNullString
(
table
.
getSchema
()))
{
sb
.
append
(
table
.
getSchema
()
+
"."
);
}
sb
.
append
(
table
.
getName
());
return
sb
.
toString
();
}
@Override
public
String
getTruncateTableSql
(
Table
table
)
{
StringBuilder
sb
=
new
StringBuilder
();
sb
.
append
(
"TRUNCATE TABLE "
);
if
(
Asserts
.
isNotNullString
(
table
.
getSchema
()))
{
sb
.
append
(
table
.
getSchema
()
+
"."
);
}
sb
.
append
(
table
.
getName
());
return
sb
.
toString
();
}
@Override
public
boolean
execute
(
String
sql
)
{
Asserts
.
checkNullString
(
sql
,
"Sql 语句为空"
);
String
[]
sqls
=
sql
.
split
(
";"
);
String
[]
sqls
=
sql
.
split
(
";"
);
try
(
Statement
statement
=
conn
.
createStatement
())
{
try
(
Statement
statement
=
conn
.
createStatement
())
{
for
(
int
i
=
0
;
i
<
sqls
.
length
;
i
++)
{
for
(
int
i
=
0
;
i
<
sqls
.
length
;
i
++)
{
if
(
Asserts
.
isNullString
(
sqls
[
i
]))
{
if
(
Asserts
.
isNullString
(
sqls
[
i
]))
{
continue
;
continue
;
}
}
statement
.
execute
(
sqls
[
i
]);
statement
.
execute
(
sqls
[
i
]);
...
@@ -178,8 +240,11 @@ public abstract class AbstractJdbcDriver extends AbstractDriver {
...
@@ -178,8 +240,11 @@ public abstract class AbstractJdbcDriver extends AbstractDriver {
public
List
<
HashMap
<
String
,
Object
>>
query
(
String
sql
)
{
public
List
<
HashMap
<
String
,
Object
>>
query
(
String
sql
)
{
List
<
HashMap
<
String
,
Object
>>
datas
=
new
ArrayList
<>();
List
<
HashMap
<
String
,
Object
>>
datas
=
new
ArrayList
<>();
List
<
Column
>
columns
=
new
ArrayList
<>();
List
<
Column
>
columns
=
new
ArrayList
<>();
try
(
PreparedStatement
preparedStatement
=
conn
.
prepareStatement
(
sql
);
PreparedStatement
preparedStatement
=
null
;
ResultSet
results
=
preparedStatement
.
executeQuery
())
{
ResultSet
results
=
null
;
try
{
preparedStatement
=
conn
.
prepareStatement
(
sql
);
results
=
preparedStatement
.
executeQuery
();
ResultSetMetaData
metaData
=
results
.
getMetaData
();
ResultSetMetaData
metaData
=
results
.
getMetaData
();
for
(
int
i
=
1
;
i
<=
metaData
.
getColumnCount
();
i
++)
{
for
(
int
i
=
1
;
i
<=
metaData
.
getColumnCount
();
i
++)
{
Column
column
=
new
Column
();
Column
column
=
new
Column
();
...
@@ -191,13 +256,14 @@ public abstract class AbstractJdbcDriver extends AbstractDriver {
...
@@ -191,13 +256,14 @@ public abstract class AbstractJdbcDriver extends AbstractDriver {
while
(
results
.
next
())
{
while
(
results
.
next
())
{
HashMap
<
String
,
Object
>
data
=
new
HashMap
<>();
HashMap
<
String
,
Object
>
data
=
new
HashMap
<>();
for
(
int
i
=
0
;
i
<
columns
.
size
();
i
++)
{
for
(
int
i
=
0
;
i
<
columns
.
size
();
i
++)
{
data
.
put
(
columns
.
get
(
i
).
getName
(),
getTypeConvert
().
convertValue
(
results
,
columns
.
get
(
i
).
getName
(),
columns
.
get
(
i
).
getType
()));
data
.
put
(
columns
.
get
(
i
).
getName
(),
getTypeConvert
().
convertValue
(
results
,
columns
.
get
(
i
).
getName
(),
columns
.
get
(
i
).
getType
()));
}
}
datas
.
add
(
data
);
datas
.
add
(
data
);
}
}
results
.
close
();
}
catch
(
SQLException
e
)
{
}
catch
(
SQLException
e
)
{
e
.
printStackTrace
();
e
.
printStackTrace
();
}
finally
{
close
(
preparedStatement
,
results
);
}
}
return
datas
;
return
datas
;
}
}
...
...
dlink-metadata/dlink-metadata-base/src/main/java/com/dlink/metadata/driver/Driver.java
View file @
b421f890
...
@@ -69,19 +69,23 @@ public interface Driver {
...
@@ -69,19 +69,23 @@ public interface Driver {
boolean
createTable
(
Table
table
);
boolean
createTable
(
Table
table
);
boolean
d
elete
Table
(
Table
table
);
boolean
d
rop
Table
(
Table
table
);
boolean
truncateTable
(
Table
table
);
boolean
truncateTable
(
Table
table
);
String
getCreateTableSql
(
Table
table
);
String
getCreateTableSql
(
Table
table
);
boolean
insert
(
Table
table
,
JsonNode
data
);
String
getDropTableSql
(
Table
table
);
String
getTruncateTableSql
(
Table
table
);
/* boolean insert(Table table, JsonNode data);
boolean update(Table table, JsonNode data);
boolean update(Table table, JsonNode data);
boolean delete(Table table, JsonNode data);
boolean delete(Table table, JsonNode data);
SelectResult
select
(
String
sql
);
SelectResult select(String sql);
*/
boolean
execute
(
String
sql
);
boolean
execute
(
String
sql
);
...
...
dlink-metadata/dlink-metadata-base/src/main/java/com/dlink/metadata/query/IDBQuery.java
View file @
b421f890
...
@@ -14,18 +14,14 @@ public interface IDBQuery {
...
@@ -14,18 +14,14 @@ public interface IDBQuery {
* 所有数据库信息查询 SQL
* 所有数据库信息查询 SQL
*/
*/
String
schemaAllSql
();
String
schemaAllSql
();
/**
* 所有表信息查询 SQL
*/
String
tableAllSql
();
/**
/**
* 表信息查询 SQL
* 表信息查询 SQL
*/
*/
String
tablesSql
();
String
tablesSql
(
String
schemaName
);
/**
/**
* 表字段信息查询 SQL
* 表字段信息查询 SQL
*/
*/
String
columnsSql
();
String
columnsSql
(
String
schemaName
,
String
tableName
);
/**
/**
* 数据库、模式、组织名称
* 数据库、模式、组织名称
*/
*/
...
...
dlink-metadata/dlink-metadata-clickhouse/pom.xml
0 → 100644
View file @
b421f890
<?xml version="1.0" encoding="UTF-8"?>
<project
xmlns=
"http://maven.apache.org/POM/4.0.0"
xmlns:xsi=
"http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation=
"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
>
<parent>
<artifactId>
dlink-metadata
</artifactId>
<groupId>
com.dlink
</groupId>
<version>
0.3.0-SANPSHOT
</version>
</parent>
<modelVersion>
4.0.0
</modelVersion>
<artifactId>
dlink-metadata-clickhouse
</artifactId>
<dependencies>
<dependency>
<groupId>
com.dlink
</groupId>
<artifactId>
dlink-metadata-base
</artifactId>
</dependency>
<dependency>
<groupId>
junit
</groupId>
<artifactId>
junit
</artifactId>
<scope>
provided
</scope>
</dependency>
<dependency>
<groupId>
ru.yandex.clickhouse
</groupId>
<artifactId>
clickhouse-jdbc
</artifactId>
<scope>
test
</scope>
</dependency>
</dependencies>
</project>
\ No newline at end of file
dlink-metadata/dlink-metadata-clickhouse/src/main/java/com/dlink/metadata/convert/ClickHouseTypeConvert.java
0 → 100644
View file @
b421f890
package
com
.
dlink
.
metadata
.
convert
;
import
com.dlink.metadata.rules.IColumnType
;
/**
* ClickHouseTypeConvert
*
* @author wenmo
* @since 2021/7/21 17:15
**/
public
class
ClickHouseTypeConvert
implements
ITypeConvert
{
@Override
public
IColumnType
convert
(
String
columnType
)
{
return
null
;
}
@Override
public
String
convertToDB
(
String
columnType
)
{
return
null
;
}
}
dlink-metadata/dlink-metadata-clickhouse/src/main/java/com/dlink/metadata/driver/ClickHouseDriver.java
0 → 100644
View file @
b421f890
package
com
.
dlink
.
metadata
.
driver
;
import
com.dlink.metadata.convert.ClickHouseTypeConvert
;
import
com.dlink.metadata.convert.ITypeConvert
;
import
com.dlink.metadata.query.ClickHouseQuery
;
import
com.dlink.metadata.query.IDBQuery
;
import
com.dlink.model.Table
;
/**
* ClickHouseDriver
*
* @author wenmo
* @since 2021/7/21 17:14
**/
public
class
ClickHouseDriver
extends
AbstractJdbcDriver
{
@Override
String
getDriverClass
()
{
return
"ru.yandex.clickhouse.ClickHouseDriver"
;
}
@Override
public
IDBQuery
getDBQuery
()
{
return
new
ClickHouseQuery
();
}
@Override
public
ITypeConvert
getTypeConvert
()
{
return
new
ClickHouseTypeConvert
();
}
@Override
public
String
getType
()
{
return
"ClickHouse"
;
}
@Override
public
String
getName
()
{
return
"ClickHouse OLAP 数据库"
;
}
@Override
public
String
getCreateTableSql
(
Table
table
)
{
return
null
;
}
}
dlink-metadata/dlink-metadata-clickhouse/src/main/java/com/dlink/metadata/query/ClickHouseQuery.java
0 → 100644
View file @
b421f890
package
com
.
dlink
.
metadata
.
query
;
import
java.sql.ResultSet
;
import
java.sql.SQLException
;
/**
* ClickHouseQuery
*
* @author wenmo
* @since 2021/7/21 17:15
**/
public
class
ClickHouseQuery
extends
AbstractDBQuery
{
@Override
public
String
schemaAllSql
()
{
return
"show databases"
;
}
@Override
public
String
tablesSql
(
String
schemaName
)
{
return
"show table status WHERE 1=1 "
;
}
@Override
public
String
columnsSql
(
String
schemaName
,
String
tableName
)
{
return
"desc `"
+
tableName
+
"`"
;
}
@Override
public
String
schemaName
()
{
return
"db"
;
}
@Override
public
String
tableName
()
{
return
"name"
;
}
@Override
public
String
tableComment
()
{
return
"comment"
;
}
@Override
public
String
columnName
()
{
return
"name"
;
}
@Override
public
String
columnType
()
{
return
"type"
;
}
@Override
public
String
columnComment
()
{
return
"comment"
;
}
@Override
public
String
columnKey
()
{
return
"KEY"
;
}
@Override
public
boolean
isKeyIdentity
(
ResultSet
results
)
throws
SQLException
{
return
"auto_increment"
.
equals
(
results
.
getString
(
"Extra"
));
}
@Override
public
String
isNotNull
()
{
return
"NULL"
;
}
}
dlink-metadata/dlink-metadata-clickhouse/src/main/resources/META-INF/services/com.dlink.metadata.driver.Driver
0 → 100644
View file @
b421f890
com.dlink.metadata.driver.ClickHouseDriver
\ No newline at end of file
dlink-metadata/dlink-metadata-mysql/pom.xml
View file @
b421f890
...
@@ -24,6 +24,7 @@
...
@@ -24,6 +24,7 @@
<dependency>
<dependency>
<groupId>
mysql
</groupId>
<groupId>
mysql
</groupId>
<artifactId>
mysql-connector-java
</artifactId>
<artifactId>
mysql-connector-java
</artifactId>
<scope>
test
</scope>
</dependency>
</dependency>
</dependencies>
</dependencies>
</project>
</project>
\ No newline at end of file
dlink-metadata/dlink-metadata-mysql/src/main/java/com/dlink/metadata/driver/MySqlDriver.java
View file @
b421f890
...
@@ -33,12 +33,12 @@ public class MySqlDriver extends AbstractJdbcDriver {
...
@@ -33,12 +33,12 @@ public class MySqlDriver extends AbstractJdbcDriver {
@Override
@Override
public
String
getType
()
{
public
String
getType
()
{
return
"My
s
ql"
;
return
"My
S
ql"
;
}
}
@Override
@Override
public
String
getName
()
{
public
String
getName
()
{
return
"My
sql
"
;
return
"My
Sql数据库
"
;
}
}
@Override
@Override
...
@@ -46,26 +46,6 @@ public class MySqlDriver extends AbstractJdbcDriver {
...
@@ -46,26 +46,6 @@ public class MySqlDriver extends AbstractJdbcDriver {
return
"com.mysql.cj.jdbc.Driver"
;
return
"com.mysql.cj.jdbc.Driver"
;
}
}
@Override
public
boolean
createTable
(
Table
table
)
{
String
sql
=
getCreateTableSql
(
table
);
if
(
Asserts
.
isNotNull
(
sql
))
{
return
execute
(
sql
.
replaceAll
(
"\r\n"
,
" "
));
}
else
{
return
false
;
}
}
@Override
public
boolean
deleteTable
(
Table
table
)
{
return
false
;
}
@Override
public
boolean
truncateTable
(
Table
table
)
{
return
false
;
}
@Override
@Override
public
String
getCreateTableSql
(
Table
table
)
{
public
String
getCreateTableSql
(
Table
table
)
{
StringBuilder
sb
=
new
StringBuilder
();
StringBuilder
sb
=
new
StringBuilder
();
...
@@ -105,23 +85,4 @@ public class MySqlDriver extends AbstractJdbcDriver {
...
@@ -105,23 +85,4 @@ public class MySqlDriver extends AbstractJdbcDriver {
return
sb
.
toString
();
return
sb
.
toString
();
}
}
@Override
public
boolean
insert
(
Table
table
,
JsonNode
data
)
{
return
false
;
}
@Override
public
boolean
update
(
Table
table
,
JsonNode
data
)
{
return
false
;
}
@Override
public
boolean
delete
(
Table
table
,
JsonNode
data
)
{
return
false
;
}
@Override
public
SelectResult
select
(
String
sql
)
{
return
null
;
}
}
}
dlink-metadata/dlink-metadata-mysql/src/main/java/com/dlink/metadata/query/MySqlQuery.java
View file @
b421f890
package
com
.
dlink
.
metadata
.
query
;
package
com
.
dlink
.
metadata
.
query
;
import
com.dlink.assertion.Asserts
;
import
java.sql.ResultSet
;
import
java.sql.ResultSet
;
import
java.sql.SQLException
;
import
java.sql.SQLException
;
...
@@ -17,21 +19,14 @@ public class MySqlQuery extends AbstractDBQuery {
...
@@ -17,21 +19,14 @@ public class MySqlQuery extends AbstractDBQuery {
}
}
@Override
@Override
public
String
tableAllSql
()
{
public
String
tablesSql
(
String
schemaName
)
{
return
"select TABLE_NAME AS `NAME`,TABLE_SCHEMA AS `Database`,TABLE_COMMENT AS COMMENT from information_schema.tables"
;
}
@Override
public
String
tablesSql
()
{
return
"select TABLE_NAME AS `NAME`,TABLE_SCHEMA AS `Database`,TABLE_COMMENT AS COMMENT from information_schema.tables"
+
return
"select TABLE_NAME AS `NAME`,TABLE_SCHEMA AS `Database`,TABLE_COMMENT AS COMMENT from information_schema.tables"
+
" where TABLE_SCHEMA = ?"
;
" where TABLE_SCHEMA = '"
+
schemaName
+
"'"
;
// return "show table status WHERE 1=1 ";
}
}
@Override
@Override
public
String
columnsSql
()
{
public
String
columnsSql
(
String
schemaName
,
String
tableName
)
{
return
"show full columns from `
%s
`"
;
return
"show full columns from `
"
+
tableName
+
"
`"
;
}
}
@Override
@Override
...
...
dlink-metadata/dlink-metadata-oracle/pom.xml
0 → 100644
View file @
b421f890
<?xml version="1.0" encoding="UTF-8"?>
<project
xmlns=
"http://maven.apache.org/POM/4.0.0"
xmlns:xsi=
"http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation=
"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
>
<parent>
<artifactId>
dlink-metadata
</artifactId>
<groupId>
com.dlink
</groupId>
<version>
0.3.0-SANPSHOT
</version>
</parent>
<modelVersion>
4.0.0
</modelVersion>
<artifactId>
dlink-metadata-oracle
</artifactId>
<dependencies>
<dependency>
<groupId>
com.dlink
</groupId>
<artifactId>
dlink-metadata-base
</artifactId>
</dependency>
<dependency>
<groupId>
junit
</groupId>
<artifactId>
junit
</artifactId>
<scope>
provided
</scope>
</dependency>
<dependency>
<groupId>
com.oracle
</groupId>
<artifactId>
ojdbc6
</artifactId>
<scope>
test
</scope>
</dependency>
</dependencies>
</project>
\ No newline at end of file
dlink-metadata/dlink-metadata-oracle/src/main/java/com/dlink/metadata/convert/OracleTypeConvert.java
0 → 100644
View file @
b421f890
package
com
.
dlink
.
metadata
.
convert
;
import
com.dlink.metadata.rules.DbColumnType
;
import
com.dlink.metadata.rules.IColumnType
;
/**
* OracleTypeConvert
*
* @author wenmo
* @since 2021/7/21 16:00
**/
public
class
OracleTypeConvert
implements
ITypeConvert
{
@Override
public
IColumnType
convert
(
String
columnType
)
{
String
t
=
columnType
.
toLowerCase
();
if
(
t
.
contains
(
"char"
))
{
return
DbColumnType
.
STRING
;
}
else
if
(
t
.
contains
(
"date"
)
||
t
.
contains
(
"timestamp"
))
{
return
DbColumnType
.
DATE
;
}
else
if
(
t
.
contains
(
"number"
))
{
if
(
t
.
matches
(
"number\\(+\\d\\)"
))
{
return
DbColumnType
.
INTEGER
;
}
else
if
(
t
.
matches
(
"number\\(+\\d{2}+\\)"
))
{
return
DbColumnType
.
LONG
;
}
return
DbColumnType
.
BIG_DECIMAL
;
}
else
if
(
t
.
contains
(
"float"
))
{
return
DbColumnType
.
FLOAT
;
}
else
if
(
t
.
contains
(
"clob"
))
{
return
DbColumnType
.
STRING
;
}
else
if
(
t
.
contains
(
"blob"
))
{
return
DbColumnType
.
BLOB
;
}
else
if
(
t
.
contains
(
"binary"
))
{
return
DbColumnType
.
BYTE_ARRAY
;
}
else
if
(
t
.
contains
(
"raw"
))
{
return
DbColumnType
.
BYTE_ARRAY
;
}
return
DbColumnType
.
STRING
;
}
@Override
public
String
convertToDB
(
String
columnType
)
{
switch
(
columnType
.
toLowerCase
()){
case
"string"
:
return
"varchar(255)"
;
case
"boolean"
:
case
"int"
:
case
"integer"
:
case
"double"
:
case
"float"
:
return
"number"
;
case
"date"
:
return
"date"
;
default
:
return
"varchar(255)"
;
}
}
}
dlink-metadata/dlink-metadata-oracle/src/main/java/com/dlink/metadata/driver/OracleDriver.java
0 → 100644
View file @
b421f890
package
com
.
dlink
.
metadata
.
driver
;
import
com.dlink.assertion.Asserts
;
import
com.dlink.metadata.convert.ITypeConvert
;
import
com.dlink.metadata.convert.OracleTypeConvert
;
import
com.dlink.metadata.query.IDBQuery
;
import
com.dlink.metadata.query.OracleQuery
;
import
com.dlink.model.Column
;
import
com.dlink.model.Table
;
import
java.util.List
;
import
java.util.stream.Collectors
;
/**
* OracleDriver
*
* @author wenmo
* @since 2021/7/21 15:52
**/
public
class
OracleDriver
extends
AbstractJdbcDriver
{
@Override
String
getDriverClass
()
{
return
"oracle.jdbc.driver.OracleDriver"
;
}
@Override
public
IDBQuery
getDBQuery
()
{
return
new
OracleQuery
();
}
@Override
public
ITypeConvert
getTypeConvert
()
{
return
new
OracleTypeConvert
();
}
@Override
public
String
getType
()
{
return
"Oracle"
;
}
@Override
public
String
getName
()
{
return
"Oracle数据库"
;
}
@Override
public
String
getCreateTableSql
(
Table
table
)
{
StringBuilder
sb
=
new
StringBuilder
();
sb
.
append
(
"CREATE TABLE "
);
sb
.
append
(
table
.
getName
()
+
" ("
);
List
<
Column
>
columns
=
table
.
getColumns
();
for
(
int
i
=
0
;
i
<
columns
.
size
();
i
++)
{
if
(
i
>
0
){
sb
.
append
(
","
);
}
sb
.
append
(
columns
.
get
(
i
).
getName
()
+
" "
+
getTypeConvert
().
convertToDB
(
columns
.
get
(
i
).
getType
()));
if
(
"YES"
.
equals
(
columns
.
get
(
i
).
getIsNotNull
())){
sb
.
append
(
" NOT NULL"
);
}
}
sb
.
append
(
");"
);
sb
.
append
(
"\r\n"
);
List
<
Column
>
pks
=
columns
.
stream
().
filter
(
column
->
column
.
isKeyFlag
()).
collect
(
Collectors
.
toList
());
if
(
Asserts
.
isNotNullCollection
(
pks
))
{
sb
.
append
(
"ALTER TABLE "
+
table
.
getName
()
+
" ADD CONSTRAINT "
+
table
.
getName
()
+
"_PK PRIMARY KEY ("
);
for
(
int
i
=
0
;
i
<
pks
.
size
();
i
++)
{
if
(
i
>
0
){
sb
.
append
(
","
);
}
sb
.
append
(
pks
.
get
(
i
).
getName
());
}
sb
.
append
(
");\r\n"
);
}
for
(
int
i
=
0
;
i
<
columns
.
size
();
i
++)
{
sb
.
append
(
"COMMENT ON COLUMN "
+
table
.
getName
()+
"."
+
columns
.
get
(
i
).
getName
()+
" IS '"
+
columns
.
get
(
i
).
getComment
()+
"';"
);
}
return
sb
.
toString
();
}
}
dlink-metadata/dlink-metadata-oracle/src/main/java/com/dlink/metadata/query/OracleQuery.java
0 → 100644
View file @
b421f890
package
com
.
dlink
.
metadata
.
query
;
/**
* OracleQuery
*
* @author wenmo
* @since 2021/7/21 15:54
**/
public
class
OracleQuery
extends
AbstractDBQuery
{
@Override
public
String
schemaAllSql
()
{
return
"SELECT DISTINCT OWNER FROM ALL_TAB_COMMENTS"
;
}
@Override
public
String
tablesSql
(
String
schemaName
)
{
return
"SELECT * FROM ALL_TAB_COMMENTS WHERE OWNER='"
+
schemaName
+
"'"
;
}
@Override
public
String
columnsSql
(
String
schemaName
,
String
tableName
)
{
return
"SELECT A.COLUMN_NAME, CASE WHEN A.DATA_TYPE='NUMBER' THEN "
+
"(CASE WHEN A.DATA_PRECISION IS NULL THEN A.DATA_TYPE "
+
"WHEN NVL(A.DATA_SCALE, 0) > 0 THEN A.DATA_TYPE||'('||A.DATA_PRECISION||','||A.DATA_SCALE||')' "
+
"ELSE A.DATA_TYPE||'('||A.DATA_PRECISION||')' END) "
+
"ELSE A.DATA_TYPE END DATA_TYPE, B.COMMENTS,A.NULLABLE,DECODE((select count(1) from all_constraints pc,all_cons_columns pcc"
+
" where pcc.column_name = A.column_name"
+
" and pcc.constraint_name = pc.constraint_name"
+
" and pc.constraint_type ='P'"
+
" and pcc.owner = upper(A.OWNER)"
+
" and pcc.table_name = upper(A.TABLE_NAME)),0,'','PRI') KEY "
+
"FROM ALL_TAB_COLUMNS A "
+
" INNER JOIN ALL_COL_COMMENTS B ON A.TABLE_NAME = B.TABLE_NAME AND A.COLUMN_NAME = B.COLUMN_NAME AND B.OWNER = '"
+
schemaName
+
"'"
+
" LEFT JOIN ALL_CONSTRAINTS D ON D.TABLE_NAME = A.TABLE_NAME AND D.CONSTRAINT_TYPE = 'P' AND D.OWNER = '"
+
schemaName
+
"'"
+
" LEFT JOIN ALL_CONS_COLUMNS C ON C.CONSTRAINT_NAME = D.CONSTRAINT_NAME AND C.COLUMN_NAME=A.COLUMN_NAME AND C.OWNER = '"
+
schemaName
+
"'"
+
"WHERE A.OWNER = '"
+
schemaName
+
"' AND A.TABLE_NAME = '"
+
tableName
+
"' ORDER BY A.COLUMN_ID "
;
}
@Override
public
String
schemaName
()
{
return
"OWNER"
;
}
@Override
public
String
tableName
()
{
return
"TABLE_NAME"
;
}
@Override
public
String
tableComment
()
{
return
"COMMENTS"
;
}
@Override
public
String
columnName
()
{
return
"COLUMN_NAME"
;
}
@Override
public
String
columnType
()
{
return
"DATA_TYPE"
;
}
@Override
public
String
columnComment
()
{
return
"COMMENTS"
;
}
@Override
public
String
columnKey
()
{
return
"KEY"
;
}
@Override
public
String
isNotNull
()
{
return
"NULLABLE"
;
}
}
dlink-metadata/dlink-metadata-oracle/src/main/resources/META-INF/services/com.dlink.metadata.driver.Driver
0 → 100644
View file @
b421f890
com.dlink.metadata.driver.OracleDriver
\ No newline at end of file
dlink-metadata/dlink-metadata-oracle/src/test/java/com/dlink/metadata/OracleTest.java
0 → 100644
View file @
b421f890
package
com
.
dlink
.
metadata
;
import
com.dlink.metadata.driver.Driver
;
import
com.dlink.metadata.driver.DriverConfig
;
import
com.dlink.model.Column
;
import
com.dlink.model.Schema
;
import
org.junit.Test
;
import
java.util.List
;
/**
* OracleTest
*
* @author wenmo
* @since 2021/7/21 16:14
**/
public
class
OracleTest
{
public
Driver
getDriver
(){
DriverConfig
config
=
new
DriverConfig
();
config
.
setType
(
"Oracle"
);
config
.
setIp
(
"10.1.51.25"
);
config
.
setPort
(
1521
);
config
.
setUsername
(
"cdr"
);
config
.
setPassword
(
"cdr"
);
config
.
setUrl
(
"jdbc:oracle:thin:@10.1.51.25:1521:orcl"
);
return
Driver
.
build
(
config
).
connect
();
}
@Test
public
void
connectTest
(){
DriverConfig
config
=
new
DriverConfig
();
config
.
setType
(
"Oracle"
);
config
.
setIp
(
"10.1.51.25"
);
config
.
setPort
(
1521
);
config
.
setUsername
(
"cdr"
);
config
.
setPassword
(
"cdr"
);
config
.
setUrl
(
"jdbc:oracle:thin:@10.1.51.25:1521:orcl"
);
boolean
test
=
Driver
.
build
(
config
).
test
();
System
.
out
.
println
(
test
);
System
.
out
.
println
(
"end..."
);
}
@Test
public
void
schemaTest
(){
Driver
driver
=
getDriver
();
List
<
Schema
>
schemasAndTables
=
driver
.
getSchemasAndTables
();
System
.
out
.
println
(
"end..."
);
}
@Test
public
void
columnTest
(){
Driver
driver
=
getDriver
();
List
<
Column
>
columns
=
driver
.
listColumns
(
"CDR"
,
"PAT_INFO"
);
System
.
out
.
println
(
"end..."
);
}
@Test
public
void
queryTest
(){
Driver
driver
=
getDriver
();
List
query
=
driver
.
query
(
"select * from CDR.PAT_INFO where ROWNUM<10"
);
System
.
out
.
println
(
"end..."
);
}
}
dlink-metadata/pom.xml
View file @
b421f890
...
@@ -14,6 +14,8 @@
...
@@ -14,6 +14,8 @@
<modules>
<modules>
<module>
dlink-metadata-base
</module>
<module>
dlink-metadata-base
</module>
<module>
dlink-metadata-mysql
</module>
<module>
dlink-metadata-mysql
</module>
<module>
dlink-metadata-oracle
</module>
<module>
dlink-metadata-clickhouse
</module>
</modules>
</modules>
...
...
pom.xml
View file @
b421f890
...
@@ -35,6 +35,8 @@
...
@@ -35,6 +35,8 @@
<guava.version>
21.0
</guava.version>
<guava.version>
21.0
</guava.version>
<slf4j.version>
1.7.30
</slf4j.version>
<slf4j.version>
1.7.30
</slf4j.version>
<mysql-connector-java.version>
8.0.22
</mysql-connector-java.version>
<mysql-connector-java.version>
8.0.22
</mysql-connector-java.version>
<ojdbc6.version>
11.2.0.3
</ojdbc6.version>
<clickhouse.version>
0.2.6
</clickhouse.version>
<banner.version>
1.0.2
</banner.version>
<banner.version>
1.0.2
</banner.version>
<hibernate-validator.version>
6.2.0.Final
</hibernate-validator.version>
<hibernate-validator.version>
6.2.0.Final
</hibernate-validator.version>
<versions-maven-plugin.version>
2.7
</versions-maven-plugin.version>
<versions-maven-plugin.version>
2.7
</versions-maven-plugin.version>
...
@@ -118,6 +120,16 @@
...
@@ -118,6 +120,16 @@
<artifactId>
mysql-connector-java
</artifactId>
<artifactId>
mysql-connector-java
</artifactId>
<version>
${mysql-connector-java.version}
</version>
<version>
${mysql-connector-java.version}
</version>
</dependency>
</dependency>
<dependency>
<groupId>
com.oracle
</groupId>
<artifactId>
ojdbc6
</artifactId>
<version>
${ojdbc6.version}
</version>
</dependency>
<dependency>
<groupId>
ru.yandex.clickhouse
</groupId>
<artifactId>
clickhouse-jdbc
</artifactId>
<version>
${clickhouse.version}
</version>
</dependency>
<dependency>
<dependency>
<groupId>
com.nepxion
</groupId>
<groupId>
com.nepxion
</groupId>
<artifactId>
banner
</artifactId>
<artifactId>
banner
</artifactId>
...
...
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