提交 3474b595 authored 作者: 宋勇's avatar 宋勇

添加tablename查询

上级 12c34977
......@@ -213,7 +213,8 @@ public class MysqlJdbcDataSourceChannel implements DataSourceChannelExt {
List<Map> tableNames = new ArrayList<>();
try (Connection connection = getConnection(requestParams)) {
StringBuilder sql =new StringBuilder( "SELECT * FROM information_schema.tables WHERE 1=1 ");
StringBuilder sql =
new StringBuilder("SELECT * FROM information_schema.tables WHERE 1=1 ");
if (StringUtils.isNotBlank(database)) {
......@@ -225,7 +226,7 @@ public class MysqlJdbcDataSourceChannel implements DataSourceChannelExt {
sql.append(" and TABLE_NAME='" + tableName + "'");
}
Statement statement = connection.createStatement();
// statement.execute("use " + database);
// statement.execute("use " + database);
ResultSet resultSet = statement.executeQuery(sql.toString());
while (resultSet.next()) {
......@@ -272,7 +273,7 @@ public class MysqlJdbcDataSourceChannel implements DataSourceChannelExt {
+ database
+ "'";
Statement statement = connection.createStatement();
// statement.execute("use " + database);
// statement.execute("use " + database);
ResultSet resultSet = statement.executeQuery(sql);
ResultSetMetaData metaData = resultSet.getMetaData();
// 字段的个数
......
......@@ -54,10 +54,10 @@ public class OracleDataSourceChannel implements DataSourceChannelExt {
Map<String, String> option) {
List<String> tableNames = new ArrayList<>();
try (Connection connection = getConnection(requestParams);
ResultSet resultSet =
connection
.getMetaData()
.getTables(database, null, null, new String[]{"TABLE"});) {
ResultSet resultSet =
connection
.getMetaData()
.getTables(database, null, null, new String[] {"TABLE"}); ) {
while (resultSet.next()) {
String tableName = resultSet.getString("TABLE_NAME");
if (StringUtils.isNotBlank(tableName)) {
......@@ -75,8 +75,8 @@ public class OracleDataSourceChannel implements DataSourceChannelExt {
@NonNull String pluginName, @NonNull Map<String, String> requestParams) {
List<String> dbNames = new ArrayList<>();
try (Connection connection = getConnection(requestParams);
PreparedStatement statement = connection.prepareStatement("SHOW DATABASES;");
ResultSet re = statement.executeQuery()) {
PreparedStatement statement = connection.prepareStatement("SHOW DATABASES;");
ResultSet re = statement.executeQuery()) {
// filter system databases
while (re.next()) {
String dbName = re.getString("database");
......@@ -236,7 +236,7 @@ public class OracleDataSourceChannel implements DataSourceChannelExt {
}
Statement statement = connection.createStatement();
// statement.execute("use " + database);
// statement.execute("use " + database);
ResultSet resultSet = statement.executeQuery(sql.toString());
ResultSetMetaData metaData = resultSet.getMetaData();
while (resultSet.next()) {
......
......@@ -56,13 +56,13 @@ public class PostgresqlDataSourceChannel implements DataSourceChannelExt {
String query = "SELECT table_schema, table_name FROM information_schema.tables";
try (Connection connection = getConnection(requestParams, database)) {
try (Statement statement = connection.createStatement();
ResultSet resultSet = statement.executeQuery(query)) {
ResultSet resultSet = statement.executeQuery(query)) {
while (resultSet.next()) {
String schemaName = resultSet.getString("table_schema");
String tableName = resultSet.getString("table_name");
if (StringUtils.isNotBlank(schemaName)
&& !PostgresqlDataSourceConfig.POSTGRESQL_SYSTEM_DATABASES.contains(
schemaName)) {
schemaName)) {
tableNames.add(schemaName + "." + tableName);
}
}
......@@ -78,14 +78,14 @@ public class PostgresqlDataSourceChannel implements DataSourceChannelExt {
@NonNull String pluginName, @NonNull Map<String, String> requestParams) {
List<String> dbNames = new ArrayList<>();
try (Connection connection = getConnection(requestParams);
PreparedStatement statement =
connection.prepareStatement("select datname from pg_database;");
ResultSet re = statement.executeQuery()) {
PreparedStatement statement =
connection.prepareStatement("select datname from pg_database;");
ResultSet re = statement.executeQuery()) {
while (re.next()) {
String dbName = re.getString("datname");
if (StringUtils.isNotBlank(dbName)
&& !PostgresqlDataSourceConfig.POSTGRESQL_SYSTEM_DATABASES.contains(
dbName)) {
dbName)) {
dbNames.add(dbName);
}
}
......@@ -112,7 +112,7 @@ public class PostgresqlDataSourceChannel implements DataSourceChannelExt {
@NonNull String database,
@NonNull String table) {
List<TableField> tableFields = new ArrayList<>();
try (Connection connection = getConnection(requestParams, database);) {
try (Connection connection = getConnection(requestParams, database); ) {
DatabaseMetaData metaData = connection.getMetaData();
String primaryKey = getPrimaryKey(metaData, database, table);
String[] split = table.split("\\.");
......@@ -203,7 +203,9 @@ public class PostgresqlDataSourceChannel implements DataSourceChannelExt {
Map<String, String> options) {
List<Map> tableNames = new ArrayList<>();
try (Connection connection = getConnection(requestParams)) {
StringBuilder sql = new StringBuilder("SELECT table_schema, table_name TABLE_NAME, table_comment TABLE_COMMENT FROM information_schema.tables where 1=1 ");
StringBuilder sql =
new StringBuilder(
"SELECT table_schema, table_name TABLE_NAME, table_comment TABLE_COMMENT FROM information_schema.tables where 1=1 ");
if (StringUtils.isNotBlank(database)) {
......
......@@ -228,13 +228,14 @@ public class SqlServerDataSourceChannel implements DataSourceChannelExt {
List<Map> tableNames = new ArrayList<>();
try (Connection connection = getConnection(pluginName, requestParams)) {
ResultSet resultSet=null;
ResultSet resultSet = null;
if (StringUtils.isNotBlank(database)) {
StringBuilder sql =new StringBuilder( "select ROW_NUMBER() OVER (ORDER BY a.name) AS No, a.name TABLE_NAME ,g.class_desc,g.major_id,g.class,g.value TABLE_COMMENT from "
+ " sys.tables a left join sys.extended_properties g on (a.object_id = g.major_id AND g.minor_id = 0) where 1=1 ");
StringBuilder sql =
new StringBuilder(
"select ROW_NUMBER() OVER (ORDER BY a.name) AS No, a.name TABLE_NAME ,g.class_desc,g.major_id,g.class,g.value TABLE_COMMENT from "
+ " sys.tables a left join sys.extended_properties g on (a.object_id = g.major_id AND g.minor_id = 0) where 1=1 ");
if (StringUtils.isNotBlank(tableName)) {
sql.append(" and a.name='" + tableName + "'");
......@@ -242,58 +243,52 @@ public class SqlServerDataSourceChannel implements DataSourceChannelExt {
Statement statement = connection.createStatement();
statement.execute("use " + database);
resultSet = statement.executeQuery(sql.toString());
resultSet = statement.executeQuery(sql.toString());
fillTableNames(tableNames, resultSet);
} else {
String sqlDatabases = "SELECT * FROM sys.sysdatabases";
Statement statement = connection.createStatement();
resultSet = statement.executeQuery(sqlDatabases.toString());
resultSet = statement.executeQuery(sqlDatabases.toString());
while (resultSet.next()) {
// 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 databaseName = resultSet.getString("name");
if (StringUtils.isNotBlank(databaseName) && !Arrays.asList("master","tempdb","model","msdb").contains(databaseName)) {
StringBuilder sql =new StringBuilder( "select ROW_NUMBER() OVER (ORDER BY a.name) AS No, a.name TABLE_NAME ,g.class_desc,g.major_id,g.class,g.value TABLE_COMMENT from "
+ " sys.tables a left join sys.extended_properties g on (a.object_id = g.major_id AND g.minor_id = 0) where 1=1 ");
if (StringUtils.isNotBlank(databaseName)
&& !Arrays.asList("master", "tempdb", "model", "msdb")
.contains(databaseName)) {
StringBuilder sql =
new StringBuilder(
"select ROW_NUMBER() OVER (ORDER BY a.name) AS No, a.name TABLE_NAME ,g.class_desc,g.major_id,g.class,g.value TABLE_COMMENT from "
+ " sys.tables a left join sys.extended_properties g on (a.object_id = g.major_id AND g.minor_id = 0) where 1=1 ");
if (StringUtils.isNotBlank(tableName)) {
sql.append(" and a.name='" + tableName + "'");
}
statement.execute("use " + database);
resultSet = statement.executeQuery(sql.toString());
resultSet = statement.executeQuery(sql.toString());
fillTableNames(tableNames, resultSet);
}
}
}
return tableNames;
} catch (SQLException e) {
throw new DataSourcePluginException("get table names failed", e);
}
}
private static void fillTableNames(List<Map> tableNames, ResultSet resultSet) throws SQLException {
if(Objects.nonNull(resultSet)) {
private static void fillTableNames(List<Map> tableNames, ResultSet resultSet)
throws SQLException {
if (Objects.nonNull(resultSet)) {
while (resultSet.next()) {
Map tables = new HashMap();
......
......@@ -211,7 +211,8 @@ public class TidbJdbcDataSourceChannel implements DataSourceChannelExt {
List<Map> tableNames = new ArrayList<>();
try (Connection connection = getConnection(requestParams)) {
StringBuilder sql =new StringBuilder( "SELECT * FROM information_schema.tables WHERE 1=1 ");
StringBuilder sql =
new StringBuilder("SELECT * FROM information_schema.tables WHERE 1=1 ");
if (StringUtils.isNotBlank(database)) {
......@@ -223,7 +224,7 @@ public class TidbJdbcDataSourceChannel implements DataSourceChannelExt {
sql.append(" and TABLE_NAME='" + tableName + "'");
}
Statement statement = connection.createStatement();
// statement.execute("use " + database);
// statement.execute("use " + database);
ResultSet resultSet = statement.executeQuery(sql.toString());
while (resultSet.next()) {
Map tables = new HashMap();
......
......@@ -27,13 +27,10 @@ import org.apache.commons.lang3.StringUtils;
import com.google.common.collect.Sets;
import lombok.NonNull;
import org.apache.seatunnel.datasource.plugin.api.utils.JdbcUtils;
import java.sql.*;
import java.util.*;
import static com.google.common.base.Preconditions.checkNotNull;
public class MysqlCDCDataSourceChannel implements DataSourceChannelExt {
List<String> typeList = Arrays.asList("varchar", "char", "json");
public static final Set<String> MYSQL_SYSTEM_DATABASES =
......@@ -100,9 +97,9 @@ public class MysqlCDCDataSourceChannel implements DataSourceChannelExt {
@SuppressWarnings("checkstyle:MagicNumber")
protected boolean checkJdbcConnectivity(Map<String, String> requestParams) {
try (Connection connection = init(requestParams);
Statement statement = connection.createStatement()) {
Statement statement = connection.createStatement()) {
try (ResultSet resultSet = statement.executeQuery("SHOW MASTER STATUS");) {
try (ResultSet resultSet = statement.executeQuery("SHOW MASTER STATUS"); ) {
if (resultSet.next()) {
String binlogFile = resultSet.getString("File");
if (StringUtils.isBlank(binlogFile)) {
......@@ -114,7 +111,7 @@ public class MysqlCDCDataSourceChannel implements DataSourceChannelExt {
}
try (ResultSet resultSet =
statement.executeQuery("SHOW VARIABLES LIKE 'binlog_format'")) {
statement.executeQuery("SHOW VARIABLES LIKE 'binlog_format'")) {
if (resultSet.next()) {
String binlogFormat = resultSet.getString("Value");
if (!"ROW".equalsIgnoreCase(binlogFormat)) {
......@@ -126,7 +123,7 @@ public class MysqlCDCDataSourceChannel implements DataSourceChannelExt {
}
try (ResultSet resultSet =
statement.executeQuery("SHOW VARIABLES LIKE 'binlog_row_image'")) {
statement.executeQuery("SHOW VARIABLES LIKE 'binlog_row_image'")) {
if (resultSet.next()) {
String binlogRowImage = resultSet.getString("Value");
if (!"FULL".equalsIgnoreCase(binlogRowImage)) {
......@@ -160,8 +157,8 @@ public class MysqlCDCDataSourceChannel implements DataSourceChannelExt {
protected List<String> getDataBaseNames(Map<String, String> requestParams) throws SQLException {
List<String> dbNames = new ArrayList<>();
try (Connection connection = init(requestParams);
PreparedStatement statement = connection.prepareStatement("SHOW DATABASES;");
ResultSet re = statement.executeQuery()) {
PreparedStatement statement = connection.prepareStatement("SHOW DATABASES;");
ResultSet re = statement.executeQuery()) {
// filter system databases
while (re.next()) {
String dbName = re.getString("database");
......@@ -176,10 +173,10 @@ public class MysqlCDCDataSourceChannel implements DataSourceChannelExt {
protected List<String> getTableNames(Map<String, String> requestParams, String dbName) {
List<String> tableNames = new ArrayList<>();
try (Connection connection = init(requestParams);
ResultSet resultSet =
connection
.getMetaData()
.getTables(dbName, null, null, new String[]{"TABLE"})) {
ResultSet resultSet =
connection
.getMetaData()
.getTables(dbName, null, null, new String[] {"TABLE"})) {
while (resultSet.next()) {
String tableName = resultSet.getString("TABLE_NAME");
if (StringUtils.isNotBlank(tableName)) {
......@@ -195,7 +192,7 @@ public class MysqlCDCDataSourceChannel implements DataSourceChannelExt {
protected List<TableField> getTableFields(
Map<String, String> requestParams, String dbName, String tableName) {
List<TableField> tableFields = new ArrayList<>();
try (Connection connection = init(requestParams);) {
try (Connection connection = init(requestParams); ) {
DatabaseMetaData metaData = connection.getMetaData();
String primaryKey = getPrimaryKey(metaData, dbName, tableName);
......@@ -272,9 +269,10 @@ public class MysqlCDCDataSourceChannel implements DataSourceChannelExt {
Map<String, String> options) {
List<Map> tableNames = new ArrayList<>();
try (Connection connection =init(requestParams)) {
try (Connection connection = init(requestParams)) {
StringBuilder sql = new StringBuilder("SELECT * FROM information_schema.tables WHERE 1=1 ");
StringBuilder sql =
new StringBuilder("SELECT * FROM information_schema.tables WHERE 1=1 ");
if (StringUtils.isNotBlank(database)) {
......@@ -286,7 +284,7 @@ public class MysqlCDCDataSourceChannel implements DataSourceChannelExt {
sql.append(" and TABLE_NAME='" + tableName + "'");
}
Statement statement = connection.createStatement();
// statement.execute("use " + database);
// statement.execute("use " + database);
ResultSet resultSet = statement.executeQuery(sql.toString());
while (resultSet.next()) {
......@@ -325,7 +323,7 @@ public class MysqlCDCDataSourceChannel implements DataSourceChannelExt {
Map<String, String> options,
String tableName) {
try (Connection connection = init(requestParams);) {
try (Connection connection = init(requestParams); ) {
String sql =
"select * from information_schema.tables where table_name ='"
+ tableName
......
......@@ -233,13 +233,14 @@ public class SqlServerCDCDataSourceChannel implements DataSourceChannelExt {
List<Map> tableNames = new ArrayList<>();
try (Connection connection = getConnection(pluginName, requestParams)) {
ResultSet resultSet=null;
ResultSet resultSet = null;
if (StringUtils.isNotBlank(database)) {
StringBuilder sql =new StringBuilder( "select ROW_NUMBER() OVER (ORDER BY a.name) AS No, a.name TABLE_NAME ,g.class_desc,g.major_id,g.class,g.value TABLE_COMMENT from "
+ " sys.tables a left join sys.extended_properties g on (a.object_id = g.major_id AND g.minor_id = 0) where 1=1 ");
StringBuilder sql =
new StringBuilder(
"select ROW_NUMBER() OVER (ORDER BY a.name) AS No, a.name TABLE_NAME ,g.class_desc,g.major_id,g.class,g.value TABLE_COMMENT from "
+ " sys.tables a left join sys.extended_properties g on (a.object_id = g.major_id AND g.minor_id = 0) where 1=1 ");
if (StringUtils.isNotBlank(tableName)) {
sql.append(" and a.name='" + tableName + "'");
......@@ -247,58 +248,52 @@ public class SqlServerCDCDataSourceChannel implements DataSourceChannelExt {
Statement statement = connection.createStatement();
statement.execute("use " + database);
resultSet = statement.executeQuery(sql.toString());
resultSet = statement.executeQuery(sql.toString());
fillTableNames(tableNames, resultSet);
} else {
String sqlDatabases = "SELECT * FROM sys.sysdatabases";
Statement statement = connection.createStatement();
resultSet = statement.executeQuery(sqlDatabases.toString());
resultSet = statement.executeQuery(sqlDatabases.toString());
while (resultSet.next()) {
// 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 databaseName = resultSet.getString("name");
if (StringUtils.isNotBlank(databaseName) && !Arrays.asList("master","tempdb","model","msdb").contains(databaseName)) {
StringBuilder sql =new StringBuilder( "select ROW_NUMBER() OVER (ORDER BY a.name) AS No, a.name TABLE_NAME ,g.class_desc,g.major_id,g.class,g.value TABLE_COMMENT from "
+ " sys.tables a left join sys.extended_properties g on (a.object_id = g.major_id AND g.minor_id = 0) where 1=1 ");
if (StringUtils.isNotBlank(databaseName)
&& !Arrays.asList("master", "tempdb", "model", "msdb")
.contains(databaseName)) {
StringBuilder sql =
new StringBuilder(
"select ROW_NUMBER() OVER (ORDER BY a.name) AS No, a.name TABLE_NAME ,g.class_desc,g.major_id,g.class,g.value TABLE_COMMENT from "
+ " sys.tables a left join sys.extended_properties g on (a.object_id = g.major_id AND g.minor_id = 0) where 1=1 ");
if (StringUtils.isNotBlank(tableName)) {
sql.append(" and a.name='" + tableName + "'");
}
statement.execute("use " + database);
resultSet = statement.executeQuery(sql.toString());
resultSet = statement.executeQuery(sql.toString());
fillTableNames(tableNames, resultSet);
}
}
}
return tableNames;
} catch (SQLException e) {
throw new DataSourcePluginException("get table names failed", e);
}
}
private static void fillTableNames(List<Map> tableNames, ResultSet resultSet) throws SQLException {
if(Objects.nonNull(resultSet)) {
private static void fillTableNames(List<Map> tableNames, ResultSet resultSet)
throws SQLException {
if (Objects.nonNull(resultSet)) {
while (resultSet.next()) {
Map tables = new HashMap();
......@@ -324,7 +319,6 @@ public class SqlServerCDCDataSourceChannel implements DataSourceChannelExt {
}
}
@Override
public Map getTableName(
@NonNull String pluginName,
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论