AE86 2 年之前
父節點
當前提交
50e9777713

+ 11 - 1
dbsyncer-connector/src/main/java/org/dbsyncer/connector/database/AbstractDatabaseConnector.java

@@ -63,7 +63,7 @@ public abstract class AbstractDatabaseConnector extends AbstractConnector implem
 
     @Override
     public List<Table> getTable(DatabaseConnectorMapper connectorMapper) {
-        return getTable(connectorMapper, null, null, null);
+        return getTable(connectorMapper, null, getSchema(connectorMapper.getConfig()), null);
     }
 
     @Override
@@ -256,6 +256,16 @@ public abstract class AbstractDatabaseConnector extends AbstractConnector implem
         return schema.toString();
     }
 
+    /**
+     * 获取架构名
+     *
+     * @param config
+     * @return
+     */
+    protected String getSchema(DatabaseConfig config) {
+        return config.getSchema();
+    }
+
     /**
      * 返回主键名称
      *

+ 5 - 10
dbsyncer-connector/src/main/java/org/dbsyncer/connector/oracle/OracleConnector.java

@@ -6,20 +6,10 @@ import org.dbsyncer.connector.config.DatabaseConfig;
 import org.dbsyncer.connector.config.ReaderConfig;
 import org.dbsyncer.connector.constant.DatabaseConstant;
 import org.dbsyncer.connector.database.AbstractDatabaseConnector;
-import org.dbsyncer.connector.database.DatabaseConnectorMapper;
 import org.dbsyncer.connector.model.PageSql;
-import org.dbsyncer.connector.model.Table;
-
-import java.util.List;
 
 public final class OracleConnector extends AbstractDatabaseConnector {
 
-    @Override
-    public List<Table> getTable(DatabaseConnectorMapper config) {
-        DatabaseConfig cfg = config.getConfig();
-        return super.getTable(config, null, cfg.getUsername().toUpperCase(), null);
-    }
-
     @Override
     public String getPageSql(PageSql config) {
         return DatabaseConstant.ORACLE_PAGE_SQL_START + config.getQuerySql() + DatabaseConstant.ORACLE_PAGE_SQL_END;
@@ -54,4 +44,9 @@ public final class OracleConnector extends AbstractDatabaseConnector {
         DatabaseConfig cfg = (DatabaseConfig) commandConfig.getConnectorConfig();
         return String.format("SELECT NUM_ROWS FROM ALL_TABLES WHERE OWNER = '%s' AND TABLE_NAME = '%s'", cfg.getUsername().toUpperCase(), table);
     }
+
+    @Override
+    protected String getSchema(DatabaseConfig config) {
+        return config.getUsername().toUpperCase();
+    }
 }

+ 1 - 1
dbsyncer-connector/src/main/java/org/dbsyncer/connector/sql/AbstractDQLConnector.java

@@ -25,7 +25,7 @@ public abstract class AbstractDQLConnector extends AbstractDatabaseConnector {
     @Override
     public List<Table> getTable(DatabaseConnectorMapper config) {
         DatabaseConfig cfg = config.getConfig();
-        return super.getTable(config, null, null, cfg.getTable());
+        return super.getTable(config, null, getSchema(cfg), cfg.getTable());
     }
 
     @Override

+ 5 - 10
dbsyncer-connector/src/main/java/org/dbsyncer/connector/sql/DQLOracleConnector.java

@@ -3,20 +3,10 @@ package org.dbsyncer.connector.sql;
 import org.dbsyncer.connector.config.DatabaseConfig;
 import org.dbsyncer.connector.config.ReaderConfig;
 import org.dbsyncer.connector.constant.DatabaseConstant;
-import org.dbsyncer.connector.database.DatabaseConnectorMapper;
 import org.dbsyncer.connector.model.PageSql;
-import org.dbsyncer.connector.model.Table;
-
-import java.util.List;
 
 public final class DQLOracleConnector extends AbstractDQLConnector {
 
-    @Override
-    public List<Table> getTable(DatabaseConnectorMapper config) {
-        DatabaseConfig cfg = config.getConfig();
-        return super.getTable(config, null, cfg.getUsername().toUpperCase(), cfg.getTable());
-    }
-
     @Override
     public String getPageSql(PageSql config) {
         return DatabaseConstant.ORACLE_PAGE_SQL_START + config.getQuerySql() + DatabaseConstant.ORACLE_PAGE_SQL_END;
@@ -38,4 +28,9 @@ public final class DQLOracleConnector extends AbstractDQLConnector {
     protected String getValidationQuery() {
         return "select 1 from dual";
     }
+
+    @Override
+    protected String getSchema(DatabaseConfig config) {
+        return config.getUsername().toUpperCase();
+    }
 }

+ 6 - 7
dbsyncer-connector/src/main/test/ConnectionTest.java

@@ -107,15 +107,14 @@ public class ConnectionTest {
         getTables(createOracleConfig(), "test", "AE86", "MY_ORG");
         getTables(createOracleConfig(), "test", "AE86", null);
 
-        getTables(createMysqlConfig());
+        getTables(createMysqlConfig(), "test", "root", "MY_ORG");
+        getTables(createMysqlConfig(), "test", "root", null);
 
-        getTables(createSqlServerConfig());
+        getTables(createSqlServerConfig(), "test", "dbo", "MY_ORG");
+        getTables(createSqlServerConfig(), "test", "dbo", null);
 
-        getTables(createPostgresConfig());
-    }
-
-    private List<Table> getTables(DatabaseConfig config) {
-        return getTables(config, null, null, null);
+        getTables(createPostgresConfig(), "postgres", "public", "MY_ORG");
+        getTables(createPostgresConfig(), "postgres", "public", null);
     }
 
     private List<Table> getTables(DatabaseConfig config, final String catalog, final String schema, final String tableNamePattern) {