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
818aea90
Commit
818aea90
authored
Apr 21, 2022
by
heyang
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[Fix-426][metadata]修复clickhouse元数据不显示问题
parent
3306f269
Changes
3
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
94 additions
and
63 deletions
+94
-63
ClickHouseDriver.java
...main/java/com/dlink/metadata/driver/ClickHouseDriver.java
+3
-56
ClickHouseQuery.java
...c/main/java/com/dlink/metadata/query/ClickHouseQuery.java
+24
-7
ClickHouseTest.java
...ouse/src/test/java/com/dlink/metadata/ClickHouseTest.java
+67
-0
No files found.
dlink-metadata/dlink-metadata-clickhouse/src/main/java/com/dlink/metadata/driver/ClickHouseDriver.java
View file @
818aea90
...
@@ -6,21 +6,17 @@ import com.alibaba.druid.sql.ast.statement.SQLExprTableSource;
...
@@ -6,21 +6,17 @@ import com.alibaba.druid.sql.ast.statement.SQLExprTableSource;
import
com.alibaba.druid.sql.ast.statement.SQLSelectStatement
;
import
com.alibaba.druid.sql.ast.statement.SQLSelectStatement
;
import
com.alibaba.druid.sql.parser.ParserException
;
import
com.alibaba.druid.sql.parser.ParserException
;
import
com.alibaba.druid.sql.parser.Token
;
import
com.alibaba.druid.sql.parser.Token
;
import
com.dlink.assertion.Asserts
;
import
com.dlink.metadata.ast.Clickhouse20CreateTableStatement
;
import
com.dlink.metadata.ast.Clickhouse20CreateTableStatement
;
import
com.dlink.metadata.convert.ClickHouseTypeConvert
;
import
com.dlink.metadata.convert.ClickHouseTypeConvert
;
import
com.dlink.metadata.convert.ITypeConvert
;
import
com.dlink.metadata.convert.ITypeConvert
;
import
com.dlink.metadata.parser.Clickhouse20StatementParser
;
import
com.dlink.metadata.parser.Clickhouse20StatementParser
;
import
com.dlink.metadata.query.ClickHouseQuery
;
import
com.dlink.metadata.query.ClickHouseQuery
;
import
com.dlink.metadata.query.IDBQuery
;
import
com.dlink.metadata.query.IDBQuery
;
import
com.dlink.model.Schema
;
import
com.dlink.model.Table
;
import
com.dlink.model.Table
;
import
com.dlink.result.SqlExplainResult
;
import
com.dlink.result.SqlExplainResult
;
import
com.dlink.utils.LogUtil
;
import
com.dlink.utils.LogUtil
;
import
java.sql.PreparedStatement
;
import
java.sql.*
;
import
java.sql.ResultSet
;
import
java.sql.SQLException
;
import
java.util.ArrayList
;
import
java.util.ArrayList
;
import
java.util.HashMap
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.List
;
...
@@ -38,7 +34,8 @@ public class ClickHouseDriver extends AbstractJdbcDriver {
...
@@ -38,7 +34,8 @@ public class ClickHouseDriver extends AbstractJdbcDriver {
@Override
@Override
String
getDriverClass
()
{
String
getDriverClass
()
{
return
"com.clickhouse.jdbc.ClickHouseDriver"
;
// return "com.clickhouse.jdbc.ClickHouseDriver";
return
"ru.yandex.clickhouse.ClickHouseDriver"
;
}
}
@Override
@Override
...
@@ -61,56 +58,6 @@ public class ClickHouseDriver extends AbstractJdbcDriver {
...
@@ -61,56 +58,6 @@ public class ClickHouseDriver extends AbstractJdbcDriver {
return
"ClickHouse OLAP 数据库"
;
return
"ClickHouse OLAP 数据库"
;
}
}
@Override
public
List
<
Schema
>
listSchemas
()
{
List
<
Schema
>
schemas
=
new
ArrayList
<>();
PreparedStatement
preparedStatement
=
null
;
ResultSet
results
=
null
;
String
schemasSql
=
getDBQuery
().
schemaAllSql
();
try
{
preparedStatement
=
conn
.
prepareStatement
(
schemasSql
);
results
=
preparedStatement
.
executeQuery
();
while
(
results
.
next
())
{
String
schemaName
=
results
.
getMetaData
().
getSchemaName
(
0
);
if
(
Asserts
.
isNotNullString
(
schemaName
))
{
Schema
schema
=
new
Schema
(
schemaName
);
schemas
.
add
(
schema
);
}
}
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
finally
{
close
(
preparedStatement
,
results
);
}
return
schemas
;
}
@Override
public
List
<
Table
>
listTables
(
String
schemaName
)
{
List
<
Table
>
tableList
=
new
ArrayList
<>();
PreparedStatement
preparedStatement
=
null
;
ResultSet
results
=
null
;
String
sql
=
getDBQuery
().
tablesSql
(
schemaName
);
try
{
preparedStatement
=
conn
.
prepareStatement
(
sql
);
results
=
preparedStatement
.
executeQuery
();
while
(
results
.
next
())
{
String
tableName
=
results
.
getString
(
getDBQuery
().
tableName
());
if
(
Asserts
.
isNotNullString
(
tableName
))
{
Table
tableInfo
=
new
Table
();
tableInfo
.
setName
(
tableName
);
tableInfo
.
setSchema
(
schemaName
);
tableList
.
add
(
tableInfo
);
}
}
}
catch
(
SQLException
e
)
{
e
.
printStackTrace
();
}
finally
{
close
(
preparedStatement
,
results
);
}
return
tableList
;
}
@Override
@Override
public
List
<
SqlExplainResult
>
explain
(
String
sql
)
{
public
List
<
SqlExplainResult
>
explain
(
String
sql
)
{
String
initialSql
=
sql
;
String
initialSql
=
sql
;
...
...
dlink-metadata/dlink-metadata-clickhouse/src/main/java/com/dlink/metadata/query/ClickHouseQuery.java
View file @
818aea90
...
@@ -9,23 +9,35 @@ package com.dlink.metadata.query;
...
@@ -9,23 +9,35 @@ package com.dlink.metadata.query;
public
class
ClickHouseQuery
extends
AbstractDBQuery
{
public
class
ClickHouseQuery
extends
AbstractDBQuery
{
@Override
@Override
public
String
schemaAllSql
()
{
public
String
schemaAllSql
()
{
return
"
SELECT currentDatabase()
"
;
return
"
show databases
"
;
}
}
/**
* 获取模式名称下的所有表,从元数据表中获取获取
*
* @param schemaName 模式名称
* @return String
*/
@Override
@Override
public
String
tablesSql
(
String
schemaName
)
{
public
String
tablesSql
(
String
schemaName
)
{
return
"s
how tables
"
;
return
"s
elect name from system.tables where 1=1 and database='"
+
schemaName
+
"'
"
;
}
}
/**
* 从元数据表中获取表字段信息
*
* @param schemaName 模式名称
* @param tableName 表名
* @return String
*/
@Override
@Override
public
String
columnsSql
(
String
schemaName
,
String
tableName
)
{
public
String
columnsSql
(
String
schemaName
,
String
tableName
)
{
return
"
desc `"
+
tableName
+
"`
"
;
return
"
select * from system.columns where 1=1 and database='"
+
schemaName
+
"' and table='"
+
tableName
+
"'
"
;
}
}
@Override
@Override
public
String
schemaName
()
{
public
String
schemaName
()
{
return
"
databas
e"
;
return
"
nam
e"
;
}
}
@Override
@Override
...
@@ -55,7 +67,7 @@ public class ClickHouseQuery extends AbstractDBQuery {
...
@@ -55,7 +67,7 @@ public class ClickHouseQuery extends AbstractDBQuery {
@Override
@Override
public
String
columnKey
()
{
public
String
columnKey
()
{
return
"
KEY
"
;
return
"
is_in_primary_key
"
;
}
}
@Override
@Override
...
@@ -67,4 +79,9 @@ public class ClickHouseQuery extends AbstractDBQuery {
...
@@ -67,4 +79,9 @@ public class ClickHouseQuery extends AbstractDBQuery {
public
String
createTableName
()
{
public
String
createTableName
()
{
return
"statement"
;
return
"statement"
;
}
}
@Override
public
String
isPK
()
{
return
"1"
;
}
}
}
dlink-metadata/dlink-metadata-clickhouse/src/test/java/com/dlink/metadata/ClickHouseTest.java
0 → 100644
View file @
818aea90
package
com
.
dlink
.
metadata
;
import
com.dlink.metadata.driver.ClickHouseDriver
;
import
com.dlink.metadata.driver.Driver
;
import
com.dlink.metadata.driver.DriverConfig
;
import
com.dlink.metadata.result.JdbcSelectResult
;
import
com.dlink.model.Column
;
import
com.dlink.model.Schema
;
import
com.dlink.utils.JSONUtil
;
import
com.fasterxml.jackson.databind.util.JSONPObject
;
import
org.junit.Test
;
import
java.util.List
;
/**
* ClickhouseTest
*
* @author heyang
* @since 2022/4/21 1:06
**/
public
class
ClickHouseTest
{
private
static
final
String
IP
=
"127.0.0.1"
;
private
static
String
url
=
"jdbc:clickhouse://"
+
IP
+
":8123/default"
;
private
ClickHouseDriver
clickHouseDriver
=
new
ClickHouseDriver
();
public
Driver
getDriver
()
{
DriverConfig
config
=
new
DriverConfig
();
config
.
setType
(
clickHouseDriver
.
getType
());
config
.
setName
(
clickHouseDriver
.
getName
());
config
.
setIp
(
IP
);
config
.
setPort
(
8123
);
// config.setUsername(null);
// config.setPassword(null);
config
.
setUrl
(
url
);
return
Driver
.
build
(
config
);
}
@Test
public
void
connectTest
()
{
String
test
=
getDriver
().
test
();
System
.
out
.
println
(
test
);
System
.
out
.
println
(
"end..."
);
}
@Test
public
void
schemaTest
()
{
List
<
Schema
>
schemasAndTables
=
getDriver
().
getSchemasAndTables
();
System
.
out
.
println
(
JSONUtil
.
toJsonString
(
schemasAndTables
));
System
.
out
.
println
(
"end..."
);
}
@Test
public
void
columnTest
()
{
Driver
driver
=
getDriver
();
List
<
Column
>
columns
=
driver
.
listColumns
(
"xxx"
,
"xxx"
);
System
.
out
.
println
(
JSONUtil
.
toJsonString
(
columns
));
System
.
out
.
println
(
"end..."
);
}
@Test
public
void
queryTest
()
{
Driver
driver
=
getDriver
();
JdbcSelectResult
query
=
driver
.
query
(
"select * from xxx"
,
10
);
System
.
out
.
println
(
JSONUtil
.
toJsonString
(
query
));
System
.
out
.
println
(
"end..."
);
}
}
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