Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
S
seatunnel-web
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
宋勇
seatunnel-web
Commits
cfdde250
提交
cfdde250
authored
4月 21, 2024
作者:
李纤
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
修改oracle
上级
8ac4fdfc
隐藏空白字符变更
内嵌
并排
正在显示
2 个修改的文件
包含
58 行增加
和
33 行删除
+58
-33
pom.xml
...atunnel-datasource-plugins/datasource-jdbc-oracle/pom.xml
+12
-7
OracleDataSourceChannel.java
...atasource/plugin/oracle/jdbc/OracleDataSourceChannel.java
+46
-26
没有找到文件。
seatunnel-datasource/seatunnel-datasource-plugins/datasource-jdbc-oracle/pom.xml
浏览文件 @
cfdde250
...
...
@@ -29,6 +29,18 @@
</properties>
<dependencies>
<!-- Oracle驱动包、支持字符集的依赖包-->
<!-- Oracle 驱动包 -->
<dependency>
<groupId>
com.oracle.database.jdbc
</groupId>
<artifactId>
ojdbc8
</artifactId>
<version>
12.2.0.1
</version>
</dependency>
<!-- Additional library required to support Internationalization -->
<dependency>
<groupId>
org.apache.seatunnel
</groupId>
<artifactId>
datasource-plugins-api
</artifactId>
...
...
@@ -50,13 +62,6 @@
<scope>
provided
</scope>
</dependency>
<!-- driver -->
<dependency>
<groupId>
com.oracle.database.jdbc
</groupId>
<artifactId>
ojdbc8
</artifactId>
<version>
${oracle-jdbc.version}
</version>
<scope>
provided
</scope>
</dependency>
</dependencies>
</project>
seatunnel-datasource/seatunnel-datasource-plugins/datasource-jdbc-oracle/src/main/java/org/apache/seatunnel/datasource/plugin/oracle/jdbc/OracleDataSourceChannel.java
浏览文件 @
cfdde250
...
...
@@ -21,7 +21,6 @@ import org.apache.seatunnel.api.configuration.util.OptionRule;
import
org.apache.seatunnel.datasource.plugin.api.DataSourceChannelExt
;
import
org.apache.seatunnel.datasource.plugin.api.DataSourcePluginException
;
import
org.apache.seatunnel.datasource.plugin.api.model.TableField
;
import
org.apache.seatunnel.datasource.plugin.api.utils.JdbcUtils
;
import
org.apache.commons.collections4.CollectionUtils
;
import
org.apache.commons.lang3.StringUtils
;
...
...
@@ -84,11 +83,11 @@ public class OracleDataSourceChannel implements DataSourceChannelExt {
List
<
String
>
dbNames
=
new
ArrayList
<>();
try
(
Connection
connection
=
getConnection
(
requestParams
);
PreparedStatement
statement
=
connection
.
prepareStatement
(
"SELECT table_name FROM user_tables
;
"
);
connection
.
prepareStatement
(
"SELECT table_name FROM user_tables"
);
ResultSet
re
=
statement
.
executeQuery
())
{
// filter system databases
while
(
re
.
next
())
{
String
dbName
=
re
.
getString
(
"database"
);
String
dbName
=
re
.
getString
(
1
);
if
(
StringUtils
.
isNotBlank
(
dbName
)
&&
!
OracleDataSourceConfig
.
ORACLE_SYSTEM_DATABASES
.
contains
(
dbName
))
{
dbNames
.
add
(
dbName
);
...
...
@@ -125,8 +124,8 @@ public class OracleDataSourceChannel implements DataSourceChannelExt {
"SELECT "
+
" t.TABLE_NAME,\n"
+
" t.COLUMN_NAME,\n"
+
" t.COMMENTS,\n"
+
" t1.DATA_TYPE,\n"
+
" t.COMMENTS
REMARKS
,\n"
+
" t1.DATA_TYPE
TYPE_NAME
,\n"
+
" t1.DATA_LENGTH VAR_LEN,\n"
+
" t1.DATA_PRECISION LEN,\n"
+
" DATA_SCALE ,\n"
...
...
@@ -159,7 +158,8 @@ public class OracleDataSourceChannel implements DataSourceChannelExt {
tableField
.
setPrimaryKey
(
true
);
}
if
(
typeList
.
contains
(
tableField
.
getType
().
toLowerCase
()))
{
if
(
resultSet
.
getString
(
"TYPE_NAME"
)
!=
null
&&
typeList
.
contains
(
resultSet
.
getString
(
"TYPE_NAME"
).
toLowerCase
()))
{
tableField
.
setLen
(
resultSet
.
getString
(
"VAR_LEN"
));
}
else
{
tableField
.
setLen
(
resultSet
.
getString
(
"LEN"
));
...
...
@@ -175,7 +175,11 @@ public class OracleDataSourceChannel implements DataSourceChannelExt {
tableField
.
setType
(
resultSet
.
getString
(
"TYPE_NAME"
));
tableField
.
setComment
(
resultSet
.
getString
(
"REMARKS"
));
Object
nullable
=
resultSet
.
getObject
(
"IS_NULLABLE"
);
tableField
.
setNullable
(
Boolean
.
TRUE
.
toString
().
equals
(
nullable
.
toString
()));
if
(
Objects
.
nonNull
(
nullable
))
{
tableField
.
setNullable
(
Boolean
.
TRUE
.
toString
().
equals
(
nullable
.
toString
()));
}
else
{
tableField
.
setNullable
(
Boolean
.
TRUE
);
}
tableFields
.
add
(
tableField
);
}
...
...
@@ -191,7 +195,13 @@ public class OracleDataSourceChannel implements DataSourceChannelExt {
@NonNull
Map
<
String
,
String
>
requestParams
,
@NonNull
String
database
,
@NonNull
List
<
String
>
tables
)
{
return
null
;
HashMap
<
String
,
List
<
TableField
>>
fields
=
new
HashMap
<>();
for
(
String
table
:
tables
)
{
List
<
TableField
>
tableFields
=
getTableFields
(
pluginName
,
requestParams
,
database
,
table
);
fields
.
put
(
table
,
tableFields
);
}
return
fields
;
}
private
String
getPrimaryKey
(
DatabaseMetaData
metaData
,
String
dbName
,
String
tableName
)
...
...
@@ -212,12 +222,22 @@ public class OracleDataSourceChannel implements DataSourceChannelExt {
throws
SQLException
,
ClassNotFoundException
{
checkNotNull
(
requestParams
.
get
(
OracleOptionRule
.
DRIVER
.
key
()));
checkNotNull
(
requestParams
.
get
(
OracleOptionRule
.
URL
.
key
()),
"Jdbc url cannot be null"
);
String
url
=
JdbcUtils
.
replaceDatabase
(
requestParams
.
get
(
OracleOptionRule
.
URL
.
key
()),
databaseName
);
String
url
=
requestParams
.
get
(
OracleOptionRule
.
URL
.
key
());
if
(
requestParams
.
containsKey
(
OracleOptionRule
.
USER
.
key
()))
{
String
username
=
requestParams
.
get
(
OracleOptionRule
.
USER
.
key
());
String
password
=
requestParams
.
get
(
OracleOptionRule
.
PASSWORD
.
key
());
String
driver
=
requestParams
.
get
(
OracleOptionRule
.
DRIVER
.
key
());
if
(
StringUtils
.
isEmpty
(
driver
))
{
driver
=
"oracle.jdbc.driver.OracleDriver"
;
}
Class
Clazz
=
Class
.
forName
(
driver
);
Driver
driverInstance
=
null
;
try
{
driverInstance
=
(
Driver
)
Clazz
.
newInstance
();
}
catch
(
InstantiationException
|
IllegalAccessException
e
)
{
throw
new
RuntimeException
(
e
);
}
DriverManager
.
registerDriver
(
driverInstance
);
return
DriverManager
.
getConnection
(
url
,
username
,
password
);
}
return
DriverManager
.
getConnection
(
url
);
...
...
@@ -232,16 +252,16 @@ public class OracleDataSourceChannel implements DataSourceChannelExt {
Map
<
String
,
String
>
options
)
{
List
<
Map
>
tableNames
=
new
ArrayList
<>();
try
(
Connection
connection
=
getConnection
(
requestParams
,
database
))
{
StringBuilder
sql
=
new
StringBuilder
(
"s
s
elect * from all_tables where 1=1 "
);
StringBuilder
sql
=
new
StringBuilder
(
"select * from all_tables where 1=1 "
);
if
(
StringUtils
.
isNotBlank
(
database
))
{
sql
.
append
(
" and OWNER=\
""
+
database
+
"\"
"
);
sql
.
append
(
" and OWNER=\
'"
+
database
+
"\'
"
);
}
if
(
StringUtils
.
isNotBlank
(
tableName
))
{
sql
.
append
(
" and table_name=\
""
+
tableName
+
"\"
"
);
sql
.
append
(
" and table_name=\
'"
+
tableName
+
"\'
"
);
}
Statement
statement
=
connection
.
createStatement
();
...
...
@@ -251,23 +271,23 @@ public class OracleDataSourceChannel implements DataSourceChannelExt {
while
(
resultSet
.
next
())
{
Map
tables
=
new
HashMap
();
// ResultSetMetaData metaData = resultSet.getMetaData();
// 获取表列数
int
columnCount
=
metaData
.
getColumnCount
();
for
(
int
i
=
1
;
i
<=
columnCount
;
i
++)
{
tables
.
put
(
metaData
.
getColumnName
(
i
),
resultSet
.
getObject
(
i
));
}
//
//
ResultSetMetaData metaData = resultSet.getMetaData();
//
//
获取表列数
//
int columnCount = metaData.getColumnCount();
//
for (int i = 1; i <= columnCount; i++) {
//
tables.put(metaData.getColumnName(i), resultSet.getObject(i));
//
}
String
tableNameold
=
resultSet
.
getString
(
"TABLE_NAME"
);
if
(
StringUtils
.
isNotBlank
(
tableNameold
))
{
tables
.
put
(
"TABLE_NAME"
,
tableNameold
);
}
String
tableComment
=
resultSet
.
getString
(
"TABLE_COMMENT"
);
if
(
StringUtils
.
isNotBlank
(
tableComment
))
{
tables
.
put
(
"TABLE_COMMENT"
,
tableComment
);
}
//
String tableComment = resultSet.getString("TABLE_COMMENT");
//
//
if (StringUtils.isNotBlank(tableComment)) {
//
tables.put("TABLE_COMMENT", tableComment);
//
}
tableNames
.
add
(
tables
);
}
return
tableNames
;
...
...
@@ -286,7 +306,7 @@ public class OracleDataSourceChannel implements DataSourceChannelExt {
try
(
Connection
connection
=
getConnection
(
requestParams
,
database
))
{
String
sql
=
"s
s
elect * from all_tables where table_name='"
"select * from all_tables where table_name='"
+
tableName
+
"' and OWNER ='"
+
database
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论