|
@@ -2,16 +2,18 @@ import oracle.jdbc.OracleConnection;
|
|
|
import org.dbsyncer.connector.config.DatabaseConfig;
|
|
|
import org.dbsyncer.connector.database.DatabaseConnectorMapper;
|
|
|
import org.dbsyncer.connector.database.ds.SimpleConnection;
|
|
|
+import org.dbsyncer.connector.enums.TableTypeEnum;
|
|
|
+import org.dbsyncer.connector.model.Table;
|
|
|
import org.junit.Test;
|
|
|
import org.slf4j.Logger;
|
|
|
import org.slf4j.LoggerFactory;
|
|
|
import org.springframework.jdbc.core.BatchPreparedStatementSetter;
|
|
|
|
|
|
import java.nio.charset.Charset;
|
|
|
-import java.sql.Clob;
|
|
|
-import java.sql.PreparedStatement;
|
|
|
-import java.sql.SQLException;
|
|
|
+import java.sql.*;
|
|
|
import java.time.LocalDateTime;
|
|
|
+import java.util.ArrayList;
|
|
|
+import java.util.List;
|
|
|
import java.util.concurrent.*;
|
|
|
|
|
|
/**
|
|
@@ -19,20 +21,15 @@ import java.util.concurrent.*;
|
|
|
* @version 1.0.0
|
|
|
* @date 2022/4/11 20:19
|
|
|
*/
|
|
|
-public class SqlServerConnectionTest {
|
|
|
+public class ConnectionTest {
|
|
|
|
|
|
private final Logger logger = LoggerFactory.getLogger(getClass());
|
|
|
|
|
|
@Test
|
|
|
public void testByte() {
|
|
|
- DatabaseConfig config = new DatabaseConfig();
|
|
|
- config.setUrl("jdbc:oracle:thin:@127.0.0.1:1521:XE");
|
|
|
- config.setUsername("ae86");
|
|
|
- config.setPassword("123");
|
|
|
- config.setDriverClassName("oracle.jdbc.OracleDriver");
|
|
|
- final DatabaseConnectorMapper connectorMapper = new DatabaseConnectorMapper(config);
|
|
|
+ final DatabaseConnectorMapper connectorMapper = new DatabaseConnectorMapper(createOracleConfig());
|
|
|
|
|
|
- String executeSql="UPDATE \"my_user\" SET \"name\"=?,\"clo\"=? WHERE \"id\"=?";
|
|
|
+ String executeSql = "UPDATE \"my_user\" SET \"name\"=?,\"clo\"=? WHERE \"id\"=?";
|
|
|
int[] execute = connectorMapper.execute(databaseTemplate ->
|
|
|
databaseTemplate.batchUpdate(executeSql, new BatchPreparedStatementSetter() {
|
|
|
@Override
|
|
@@ -62,12 +59,7 @@ public class SqlServerConnectionTest {
|
|
|
|
|
|
@Test
|
|
|
public void testConnection() throws InterruptedException {
|
|
|
- DatabaseConfig config = new DatabaseConfig();
|
|
|
- config.setUrl("jdbc:sqlserver://127.0.0.1:1433;DatabaseName=test");
|
|
|
- config.setUsername("sa");
|
|
|
- config.setPassword("123");
|
|
|
- config.setDriverClassName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
|
|
|
- final DatabaseConnectorMapper connectorMapper = new DatabaseConnectorMapper(config);
|
|
|
+ final DatabaseConnectorMapper connectorMapper = new DatabaseConnectorMapper(createSqlServerConfig());
|
|
|
|
|
|
// 模拟并发
|
|
|
final int threadSize = 100;
|
|
@@ -109,4 +101,80 @@ public class SqlServerConnectionTest {
|
|
|
TimeUnit.SECONDS.sleep(3);
|
|
|
logger.info("test end");
|
|
|
}
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void testReadSchema() {
|
|
|
+ getTables(createOracleConfig(), "test", "AE86", "MY_ORG");
|
|
|
+ getTables(createOracleConfig(), "test", "AE86", null);
|
|
|
+
|
|
|
+ getTables(createMysqlConfig());
|
|
|
+
|
|
|
+ getTables(createSqlServerConfig());
|
|
|
+
|
|
|
+ getTables(createPostgresConfig());
|
|
|
+ }
|
|
|
+
|
|
|
+ private List<Table> getTables(DatabaseConfig config) {
|
|
|
+ return getTables(config, null, null, null);
|
|
|
+ }
|
|
|
+
|
|
|
+ private List<Table> getTables(DatabaseConfig config, final String catalog, final String schema, final String tableNamePattern) {
|
|
|
+ final DatabaseConnectorMapper connectorMapper = new DatabaseConnectorMapper(config);
|
|
|
+ List<Table> tables = new ArrayList<>();
|
|
|
+ connectorMapper.execute(databaseTemplate -> {
|
|
|
+ SimpleConnection connection = (SimpleConnection) databaseTemplate.getConnection();
|
|
|
+ Connection conn = connection.getConnection();
|
|
|
+ String databaseCatalog = null == catalog ? conn.getCatalog() : catalog;
|
|
|
+ String schemaNamePattern = null == schema ? conn.getSchema() : schema;
|
|
|
+ String[] types = {TableTypeEnum.TABLE.getCode(), TableTypeEnum.VIEW.getCode(), TableTypeEnum.MATERIALIZED_VIEW.getCode()};
|
|
|
+ final ResultSet rs = conn.getMetaData().getTables(databaseCatalog, schemaNamePattern, tableNamePattern, types);
|
|
|
+ while (rs.next()) {
|
|
|
+ final String tableName = rs.getString("TABLE_NAME");
|
|
|
+ final String tableType = rs.getString("TABLE_TYPE");
|
|
|
+ tables.add(new Table(tableName, tableType));
|
|
|
+ }
|
|
|
+ return tables;
|
|
|
+ });
|
|
|
+
|
|
|
+ logger.info("\r 表总数{}", tables.size());
|
|
|
+ tables.forEach(t -> logger.info("{} {}", t.getName(), t.getType()));
|
|
|
+
|
|
|
+ return tables;
|
|
|
+ }
|
|
|
+
|
|
|
+ private DatabaseConfig createSqlServerConfig() {
|
|
|
+ DatabaseConfig config = new DatabaseConfig();
|
|
|
+ config.setUrl("jdbc:sqlserver://127.0.0.1:1433;DatabaseName=test");
|
|
|
+ config.setUsername("sa");
|
|
|
+ config.setPassword("123");
|
|
|
+ config.setDriverClassName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
|
|
|
+ return config;
|
|
|
+ }
|
|
|
+
|
|
|
+ private DatabaseConfig createOracleConfig() {
|
|
|
+ DatabaseConfig config = new DatabaseConfig();
|
|
|
+ config.setUrl("jdbc:oracle:thin:@127.0.0.1:1521:ORCL");
|
|
|
+ config.setUsername("ae86");
|
|
|
+ config.setPassword("123");
|
|
|
+ config.setDriverClassName("oracle.jdbc.OracleDriver");
|
|
|
+ return config;
|
|
|
+ }
|
|
|
+
|
|
|
+ private DatabaseConfig createMysqlConfig() {
|
|
|
+ DatabaseConfig config = new DatabaseConfig();
|
|
|
+ config.setUrl("jdbc:mysql://127.0.0.1:3306/test?rewriteBatchedStatements=true&useUnicode=true&characterEncoding=UTF8&serverTimezone=Asia/Shanghai&useSSL=false&verifyServerCertificate=false&autoReconnect=true&failOverReadOnly=false");
|
|
|
+ config.setUsername("root");
|
|
|
+ config.setPassword("123");
|
|
|
+ config.setDriverClassName("com.mysql.cj.jdbc.Driver");
|
|
|
+ return config;
|
|
|
+ }
|
|
|
+
|
|
|
+ private DatabaseConfig createPostgresConfig() {
|
|
|
+ DatabaseConfig config = new DatabaseConfig();
|
|
|
+ config.setUrl("jdbc:postgresql://127.0.0.1:5432/postgres");
|
|
|
+ config.setUsername("postgres");
|
|
|
+ config.setPassword("123456");
|
|
|
+ config.setDriverClassName("org.postgresql.Driver");
|
|
|
+ return config;
|
|
|
+ }
|
|
|
}
|